-尝试遍历列名列表,按特定条目过滤并计算该条目的出现次数。我正在尝试在for循环中的管道中运行类似于下面的内容,但是除非使用questionNumbers[i]
替换直接的列名,否则我无法获得下面的内容。
df %>%
nrow(filter(questionNumbers[i] == Response[1])) %>%
....etc
有什么想法吗?我觉得有一种apply()
的方式可以做到-有想法吗?
答案 0 :(得分:0)
,因此,假设您有一个data.frame
(我将和mtcars
一起玩)和要寻找的结果向量(c(1,2)
)。 lapply
的以下混合物将与tibble
和tidyr
软件包一起使用。
responses = c(1,2)
#create a named list
exampleOutput <- lapply(setNames(names(mtcars),names(mtcars)), function(x){
lapply(setNames(responses, paste0('response_', responses)),function(y){
mtcars[mtcars[x] == y, x] %>%
length
}) %>%
#convert named list into a tibble/dataframe
tibble::as.tibble()
}) %>%
#convert list into a tibble/dataframe
tibble::enframe() %>%
#open up the nested data
tidyr::unnest()
您会得到类似的东西
name response_1 response_2
<chr> <int> <int>
1 mpg 0 0
2 cyl 0 0
3 disp 0 0
4 hp 0 0
5 drat 0 0
6 wt 0 0
7 qsec 0 0
8 vs 14 0
9 am 13 0
10 gear 0 0
11 carb 7 10