【发布时间】:2020-11-24 15:57:52
【问题描述】:
我有一个简化的包含 71 列和 N 行的数据框。我想要得到的是基于所有其他列的第一列中的值的频率表(所有其他列都有假人)。简化(只有 4 列)这将是这样的:
df <- data.frame(sample(1:8,20,replace=T),sample(0:1,20,replace = T),sample(0:1,20,replace = T),sample(0:1,20,replace = T))
我已经用 dplyr 尝试了这个 for 循环(其中 x 是具有 8 个不同值的第一列),它只适用于前 10 或 11 列没有问题,但之后它只生成 NA 并返回错误:
freq_df <- data.frame(matrix(NA, nrow=8, ncol=71))
for (i in 2:71){
freq_df[,i] <- df %>%
filter(df[i]==1) %>%
count(x) %>%
select(n)
}
in `[<-.data.frame`(`*tmp*`, , i, value = list(n = c(3L, 5L, 8L, :
replacement element 1 has 7 rows, need 8
有人知道为什么 R 会返回这个错误吗?感谢您的帮助!
【问题讨论】: