我想统计给定列中重复出现的数字变量的数量。我的数据集是:mydata
我有一个看起来像这样的数据帧:
mydata <- structure(list(VARIABLE = c(1, 1, 2, 3, 3, 3, 4, 4)),
.Names = "VARIABLE", row.names = c(NA, -8L), class = "data.frame")
mydata
## VARIABLE
## 1 1
## 2 1
## 3 2
## 4 3
## 5 3
## 6 3
## 7 4
## 8 4
我想计算VARIABLE
列中的1s、2s、3s、4s的个数(两个1、一个2、三个3、两个4)。我是否可以在不安装额外软件包的情况下完成此操作?
是的,按如下方式使用table
,它来自base
包:
mydata <- data.frame(VARIABLE = c(1, 1, 2, 3, 3, 3, 4, 4))
table(mydata$VARIABLE)
# 1 2 3 4
# 2 1 3 2
正如Maiasaura所建议的,你可以把输出变成一个漂亮的数据帧:
data.frame(table(mydata$VARIABLE))
# Var1 Freq
# 1 1 2
# 2 2 1
# 3 3 3
# 4 4 2
作为?table
的替代方案,您也可以在想要检测变量/向量中特定重复值的"运行"的情况下使用?rle
。在这种情况下,您将获得与使用table
函数相同的结果,尽管情况并非总是如此。
mydata <- data.frame(VARIABLE = c(1, 1, 2, 3, 3, 3, 4, 4))
rle(mydata$VARIABLE)
结果:
Run Length Encoding
lengths: int [1:4] 2 1 3 2
values : num [1:4] 1 2 3 4
您也可以对rle
函数的结果进行子集设置,如下所示:
rle(mydata$VARIABLE)$values
[1] 1 2 3 4
rle(mydata$VARIABLE)$lengths
[1] 2 1 3 2