我有以下数据框:
fruit <- c("apple", "orange", "peach", "")
color <- c("red", "orange", "", "purple")
taste <- c("sweet", "", "sweet", "neutral")
df <- data.frame(fruit, color, taste)
我想将所有列一起添加到一个名为“combined”的列中:
combined <- c("apple + red + sweet", "orange + orange", "peach + sweet", "purple + neutral")
因此,我有以下数据框:
df2 <- data.frame(fruit, color, taste, combined)
我尝试使用regex:
df %>%
unite("combined",
fruit,
color,
taste,
sep=" + ",
remove = FALSE)
我一直试图删除“+”,当它在开始或结束,或者如果有一个空白之前,它使用以下正则表达式,但它感觉草率,似乎没有达到正是我想要的:
df %>%
as_tibble() %>%
mutate(across(any_of(combined), gsub, pattern = "^\\+|\\+ \\+ \\+ \\+|\\+ \\+ \\+|\\+ \\+|\\+$", replacement = "")) %>%
mutate_if(is.character, trimws)
任何指导将不胜感激!谢谢!
2条答案
按热度按时间o7jaxewo1#
我们可以用
NA
替换空白(""
),然后在unite
中使用na.rm = TRUE
2izufjch2#
创建一个接受两个字符串并生成其和的函数,然后使用
Reduce
应用该函数。给予