如果我有一组包含以下内容的数据:
0-3
0-3
0-3
2-6
2-6
2-6
2-6
2-6
1-3
我怎样才能把这个数字转换成一个数字,比如上面的值,或者更好的两个数字的平均值--连字符的两边?
任何帮助都将不胜感激!
发布于 2020-02-17 15:11:47
您可以使用read.table
在-
上拆分,并使用rowMeans
获取平均值。
x <- c("0-3", "2-6", "1-3")
rowMeans(read.table(text=x, sep="-"))
#[1] 1.5 4.0 2.0
发布于 2020-02-17 15:14:32
你可以用tidyverse来做这个
d <- c("0-1", "1-1","2-0")
data.frame(d) %>% separate(col = d, sep = "-", into = c("l", "r")) %>%
mutate(average = (as.numeric(l) + as.numeric(r) / 2))
l r averaged
1 0 1 0.5
2 1 1 1.5
3 2 0 2.0
发布于 2020-02-17 15:20:30
另一个基R解
sapply(strsplit(dat,"-"),function(v) mean(as.numeric(v)))
或
rowMeans(`class<-`(do.call(rbind,strsplit(dat,"-")),"numeric"))
这样的话
# [1] 1.5 4.0 2.0
数据
dat <- c("0-3", "2-6", "1-3")
https://stackoverflow.com/questions/60265206
复制相似问题