在R中的数据框中以“%”字符

时间:2017-05-19 07:47:02

标签: r dataframe

我无法调整此论坛上的现有解决方案,这些解决方案将数据帧列拆分为两个。

我有这个数据框(有趣的是,它已被拆分以使其看起来像这样),我需要在%符号处拆分

enter image description here

我想要的最终结果是32%,35%,54%...... 55%将被删除。所以它只是两列数据。这些数据是从网站上删除的。

谢谢

3 个答案:

答案 0 :(得分:2)

df$Long<-sapply(strsplit(as.character(df$Long), split= "\\%"),'[',2)           
   Long Short
1  239   497
2  142   269
3  216   186
4   96    52
5   93   184
6  160   142
7   96    79

答案 1 :(得分:1)

这应该这样做:

df$Long <- paste0(unlist(lapply(strsplit(a, "%"), `[[`, 1)), "%")

它将Long列中的每个字符串拆分为"%",并获取每个拆分中的第一个元素。然后它将"%"添加到结果向量的末尾。

答案 2 :(得分:1)

我会使用tidyr和dplyr:

library(dplyr)
library(tidyr)

data.frame(Long = c("32% 239", "35% 142", "54% 216"), Short = c(497,269,186), stringsAsFactors = F) %>%
    separate(Long, c("Long_percent","Long_2"), sep = " ") %>%
    select(-Long_percent)

或者您也可以使用正则表达式,如果数据形成不当,这可能很有用:

data.frame(Long = c("32% 239", "35% 142", "54% 216"), Short = c(497,269,186), stringsAsFactors = F) %>%
    mutate(Long = gsub("[0-9%]+ ", "", Long, perl = T))