如何在不安装软件包的情况下计算R中一列中的多个数字变量



我想统计给定列中重复出现的数字变量的数量。我的数据集是: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

相关内容

  • 没有找到相关文章

最新更新