计算两列中的出现

时间:2019-01-31 22:11:01

标签: r

我正在编写一个代码,如果存在另一列(c1)中的值,则对某列(c2,c3,c4,...)中值的出现次数进行计数,然后除以c1中的总出现次数即可得出两者同时发生的百分比。也就是说,如果任何一个单元格都具有NA值,则不计算在内。

到目前为止,我已经编写了如下代码:

df <- data.frame(table)

for (col in 1:ncol(df)){
  x = 0
  for(row in 1:nrow(df)){

    if ((is.na(df[row,1])==F) & (is.na(df[row,col])==F)){
       x = x + 1
    }
    p <- x / colSums(!is.na(df))[1]
  }
  print(p)
}

它给了我正确的结果,但是全部都参考了c1列,如下所示:

C1 
                        1 
C1 
                0.8666667 
C1
                0.5333333 
C1 
                0.5333333 
C1 
                      0.8

如何获取每个列的名称而不是对所有值都引用C1?以及如何获取p进行排序?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试以下

library(tidyverse)
df2 <- tibble(
  var_name = names(df),
  prop = p
) %>%
 arrange(p)

这应该为您提供一个新的小标题(数据框),其中有一列来自原始数据框的名称和一列包含您要计算的值的数据。