我无法调整此论坛上的现有解决方案,这些解决方案将数据帧列拆分为两个。
我有这个数据框(有趣的是,它已被拆分以使其看起来像这样),我需要在%符号处拆分
我想要的最终结果是32%,35%,54%...... 55%将被删除。所以它只是两列数据。这些数据是从网站上删除的。
谢谢
答案 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))