R - 计算每列中某些值的数量
R - Count numbers of certain values in each column
我发现了与我类似的问题,但其中 none 解释了如何为数据框的每一列执行此操作。
我有一个这样的数据框:
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,但它不是真的,而且我想自动完成所有列。
仅返回第一列大于 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
您可以使用 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
希望对您有所帮助。
我发现了与我类似的问题,但其中 none 解释了如何为数据框的每一列执行此操作。
我有一个这样的数据框:
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,但它不是真的,而且我想自动完成所有列。
仅返回第一列大于 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
您可以使用 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
希望对您有所帮助。