使用R提取并计算列中出现的频率

时间:2016-09-06 06:55:57

标签: r dataframe

我有一个.csv文件,就像

  COLUMN1  COLUMN2 COLUMN3 COLUMN4
1       a 12/16/17       1       1
2       b       15       1       2
3       c       18       1       3
4       d    12/15       4       5
5       e    13/12       1       5

如何计算数字x的次数出现在COLUMN2中?我期望的结果是

12 15 13 16 17 18 
 3  2  1  1  1  1

2 个答案:

答案 0 :(得分:2)

我们可以使用strsplittable

x <- c("12/16/17", "15", "18", "12/15", "13/12")
# [1] "12/16/17" "15"       "18"       "12/15"    "13/12" 

y <- unlist(strsplit(x, split="/"))
# [1] "12" "16" "17" "15" "18" "12" "15" "13" "12"

z <- table(y)
#12 13 15 16 17 18 
# 3  1  2  1  1  1 

如果您想要问题中的订单,则需要将y编码为具有所需级别的因素:

z <- table(factor(y, levels = unique(y)))
#12 16 17 15 18 13 
# 3  1  1  2  1  1 

答案 1 :(得分:2)

我们可以将scantable

一起使用
table(scan(text=df1$COLUMN2, sep="/", what=numeric(), quiet = TRUE))
# 12 13 15 16 17 18 
# 3  1  2  1  1  1 

如果列为factor,请转换为character并在scan中使用

table(scan(text=as.character(df1$COLUMN2), sep="/", 
                              what=numeric(), quiet = TRUE))