我有以下問題,我有一個帶有多個字符列的tibble。
我試圖提供一個MRE如下:
library(tidyverse)
df < - tibble(food = c("pizza。面包,蘋果","joghurt, cereal, banana"),
food2 = c("面包,香腸。草莓", "酸奶、燕麥、培根"),
food3 = c("ice cream, 面包,奶昔", "瓜子,蛋糕,酸奶")
)
df %>%
# rowwise() %>%
mutate(allcolumns =map2()
str_split(food, ", "),
str_split(food2, ", "),
# str_split(food3, ", "),
交叉
) %>% unlist(/span>)
) -> df_new
我的目標是獲得所有列的常用詞。詞語在列中由,分隔。在MRE中,我能夠找到兩列之間的交叉點,但是我無法得到這個問題的解決方案。我用Reduce做了實驗,但沒有得到它。
作為一個編輯:我也想把它作為一個新的行追加到現有的tibble中
uj5u.com熱心網友回復:我們可以使用map在列上回圈,做str_split,然后reduce得到intersect進行元素式intersect
library(dplyr)
library(purrr)
library(stringr)
df%>%
purrr:: map(str_split, ", ") %>%
轉置 %>%
purrr::map_chr(reduce, intersect) %>%
mutate(df, Intersect=.)
輸出
# A tibble: 2 x 4
食物 food2 food3 交叉
<chr>/span> <chr> <chr> <chr>
1比薩,面包,蘋果面包。 香腸,草莓冰淇淋,面包,奶泡面包
2 酸奶, 麥片, 香蕉酸奶。 燕麥,培根甜瓜,蛋糕,酸奶joghurt
或者也可以使用pmap
df %>%
mutate(Intersect = pmap(across(everything()。 str_split, ", "),
~ list(...) %> %
reduce(intersect)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/324466.html
標籤:
