提取和,使用R
问题描述:
我有一个.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
答
我们可以使用scan
与table
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))
答
我们可以用strsplit
和table
:
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
使用它提取列作为向量,然后执行计算。对于像我这样的新手来说,这是一个直接的方式,也谢谢。 –