R - 统计每列中特定值的数量

8

我发现了一些类似于我的问题,但是它们都没有解释如何对数据框的每一列进行操作。

我有一个像这样的数据框:

x1 = seq(12, 200, length=20)
x2 = seq(50, 120, length=20)
x3 = seq(40, 250, length=20)
x4 = seq(100,130, length=20)
x5 = seq(10, 300, length=20) 

df = data.frame(V1=x1, V2=x2, V3=x3, V4=x4, V5=x5) 

现在我想要获取每一列中大于120的数值数量。
我已经尝试过:
nrow(df[,1] >120)

这没起作用,它显示为0,但实际上并不是0,而且我还想自动处理所有列。

2个回答

5

你可以使用 tidyverse 解决这个问题。

library(tidyverse)

df%>%
gather(x, value, V1:V5)%>%
group_by(x)%>%
tally(value > 120)

# A tibble: 5 x 2
  x         n
  <chr> <int>
1 V1        9
2 V2        0
3 V3       12
4 V4        7
5 V5       12

希望这能帮到你。

1
谢谢!这是一个简短而易于理解的解决方案! - Essi

3

仅返回第一列中大于120的元素数量

df[df[,1] >120 ,1]

[1] 120.8421 130.7368 140.6316
[4] 150.5263 160.4211 170.3158
[7] 180.2105 190.1053 200.0000

length(df[df[,1] >120 ,1])

[1] 9

返回所有列中大于120的元素数量

cols <- vector()

for(i in 1:ncol(df)){
  cols[i] <- length(df[df[,i] >120 ,i]) 
}

cols

[1]  9  0 12  7 12

谢谢!这对我的示例有用,但在我的真实数据框中,它还会计算空行。我不知道为什么。 - Essi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接