我有一个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个管道
答案 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)