盘点数量数据框中的每列

时间:2019-03-21 17:49:30

标签: r

我有一个5列乘100行的数据帧。我想计算每列中出现的管道符号|的数量。

df <- as.data.frame(matrix(c(
    c("1", "2", "3", "4", "5"),
    c("A", "B", "C", "B", "B"),
    c("|", "W", "G", "|", "D"),
    c("Q", "D", "F", "|", "F"),
    c("Q", "|", "|", "|", "Q")),
    5, 5, byrow=T)
)

  V1 V2 V3 V4 V5
1  1  2  3  4  5
2  A  B  C  B  B
3  |  W  G  |  D
4  Q  D  F  |  F
5  Q  |  |  |  Q

我想要一个结果,显示第1列中有1个管道,第2列中有1个管道,第3列中有1个管道,第4列中有3个管道,第5列中有0个管道

2 个答案:

答案 0 :(得分:3)

另一种方法是在Dan Y的数据帧上使用colSums()

colSums(df == "|")

V1 V2 V3 V4 V5 
 1  1  1  3  0 

答案 1 :(得分:1)

如果每个字符串只是单个字符,则可以执行简单的sapply

# turning the example data you provided into a data.frame
df <- as.data.frame(matrix(c(
    c("1", "2", "3", "4", "5"),
    c("A", "B", "C", "B", "B"),
    c("|", "W", "G", "|", "D"),
    c("Q", "D", "F", "|", "F"),
    c("Q", "|", "|", "|", "Q")),
    5, 5, byrow=T)
)

# calculation you want
sapply(df, function(x) sum(x == "|"))

# result = c(1, 1, 1, 3, 0)