R:对整数字符输入进行计算。

问题描述 投票:0回答:1

我有一个 data frame 的条目(类型。character),这些条目要么是 integers 或一系列 integers 像这样,用减号隔开。

ds1:
    Values
    12-15
    5-10
    2-3
    12
    40
    3

我想生成一个数据框,保留整数值 但计算有范围的条目的平均数(两种类型: num),即:

ds2:
    Values
    13.5
    7.5
    2.5
    12
    40
    3

到目前为止,我只设法去掉了减号。但这种方法给我的是下界,而不是计算两界之间的平均值的方法。我的方法是否有误?我希望得到任何帮助,并且没有包的偏好。

r types average
1个回答
1
投票

下面是一个解决方案,使用 separate_rows() tidyr包中的函数。

values<-c("12-15", "5-10",  "2-3", "12",
          "40",  "3")

df <-data.frame(values)

library(dplyr)
library(tidyr)
df %>% mutate(ID = row_number()) %>% separate_rows(values, sep="[^[:alnum:].]+") %>% 
  group_by(ID) %>% summarize(values=mean(as.numeric(values)))

     ID values
  <int>  <dbl>
1     1   13.5
2     2    7.5
3     3    2.5
4     4   12  
5     5   40  
6     6    3  
© www.soinside.com 2019 - 2024. All rights reserved.