2016-09-06 55 views
0

我有一个.csv文件计算发生在列的频率,这就好比提取和,使用R

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

我们可以使用scantable

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

如果列factor,转换为characterscan

table(scan(text=as.character(df1$COLUMN2), sep="/", 
           what=numeric(), quiet = TRUE)) 
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 
+0

使用它提取列作为向量,然后执行计算。对于像我这样的新手来说,这是一个直接的方式,也谢谢。 –