提问人:sdS 提问时间:6/22/2022 最后编辑:user438383sdS 更新时间:6/22/2022 访问量:52
获取所有列名的方法,计算每个列名出现的频率,以及每个列名出现在 R 中的多个数据集中的数据帧?
Way to get all column names, count of how often each column name appears, and in which dataframe(s) each appears across multiple datasets in R?
问:
我正在处理来自不同年份的多个调查回复数据集。如果某个列出现在 1 个以上的数据集中,则它将具有相同的名称。这是我正在寻找的一个例子。假设这些是我的数据集的列名(为简洁起见,此处使用 3)
d1 <- colnames(f2018) <- c("Institution", "Department", "Complete",
"effective_goals", "recs_open", "mostvaluable_open", "learningdifferences_l",
"studentmotivation_l")
d2 <- colnames(sum2015) <- c("Institution", "Department", "Complete",
"effective_goals", "recs_open", "effective_tools", "learningdifferences_l")
d3 <- <- c("Institution","Department", "Complete",
"effective_goals", "effective_tools", "effective_assessment", "learningscience_freq")
我的目标是获得一个包含 3 列的结果数据帧 -- 1) 来自所有 3 个数据集的每个列名,列名出现的频率计数(在本例中应为 1-3),(3) 可以找到特定列名的数据帧(例如,d1、d2、d3)。
所以像这样(没有列出 x 的所有列名,但为了给出一个可复制的例子,这里有一个插图)
x <- (c("Institution", "Department", "Complete",
"effective_goals", "recs_open", "mostvaluable_open", "learningdifferences_l",
"studentmotivation_l", "effective_tools")
y<- c("3", "3", "3", "3", "2", "1", "2", "1", "2")
z <- c("d1, d2, d3", "d1, d2, d3", "d1, d2, d3", "d1, d2, d3", "d1, d2", "d1",
"d1, d2", "d1", "d2, d3")
答:
2赞
PaulS
6/22/2022
#1
一个可能的解决方案:
library(tidyverse)
data.frame(x = unique(c(d1, d2, d3))) %>%
mutate(
apply(., 1, \(x) c(d1 = x %in% d1, d2 = x %in% d2, d3 = x %in% d3)) %>%
t %>% as.data.frame,
z = rowSums(across(-x)),
across(c(-x,-z), ~ ifelse(.x, cur_column(), NA))) %>%
rowwise() %>%
mutate(y = c_across(d1:d3) %>% na.omit %>% str_c(collapse = ", ")) %>%
select(x, y, z) %>%
ungroup
#> # A tibble: 11 × 3
#> x y z
#> <chr> <chr> <dbl>
#> 1 Institution d1, d2, d3 3
#> 2 Department d1, d2, d3 3
#> 3 Complete d1, d2, d3 3
#> 4 effective_goals d1, d2, d3 3
#> 5 recs_open d1, d2 2
#> 6 mostvaluable_open d1 1
#> 7 learningdifferences_l d1, d2 2
#> 8 studentmotivation_l d1 1
#> 9 effective_tools d2, d3 2
#> 10 effective_assessment d3 1
#> 11 learningscience_freq d3 1
评论
1赞
PaulS
6/22/2022
@SdS,不平等不应该成为问题。我猜你正在定义 ,但不正确,因为你将字符串向量分配给 colnames,然后将这些 colnames 分配给 和 ...d1
d2
d3
d1
d2
d3
评论