如果我有一组包含以下内容的数据:
0-3
0-3
0-3
2-6
2-6
2-6
2-6
2-6
1-3
我该如何将其转换为一个数字,比如上限,或者更好的是连字符两侧两个数字的平均值?
任何帮助都将不胜感激!
您可以使用read.table
对-
进行拆分,并使用rowMeans
获得平均值。
x <- c("0-3", "2-6", "1-3")
rowMeans(read.table(text=x, sep="-"))
#[1] 1.5 4.0 2.0
您可以将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
另一个基本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")