r-将文本范围转换为单个整数



如果我有一组包含以下内容的数据:

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")

最新更新