我有兩個帶有字串值的資料框:
df1 <- data.frame(values = c("apples_x", "oranges_z", "bananas_y", "berries_u", "melons_r"))
df2 = data.frame(values = c('apples','oranges','z','pears','x','bananas','plums','y','h','grapes','q'))
我想在兩個資料幀之間進行成對比較,方法是遍歷資料幀 2 的每一行并分配對數,其中 df1 值的水果和字母都出現在 df2 中。我想創建一個新的資料框來存盤找到的匹配項的對號。理想情況下,它看起來像這樣:
df3 %>% head()
values paired
<ch> <int>
1 apples 1
2 x 1
3 oranges 2
4 z 2
5 bananas 3
6 y 3
我試圖將 df1 中的值分成兩個字串,但是我得到了與任何字符匹配的字串。
lapply(df2, FUN=function(x){any(df1==x[[1]] & df1==x[[2]])})
uj5u.com熱心網友回復:
根據更新,我們可以filter在拆分 'df1' 中的列后,然后創建一個序列索引并重塑為 'long' 格式
library(dplyr)
library(tidyr)
df1 %>%
separate(values, into = c('values1', 'values2')) %>%
filter(if_all(everything(), ~ .x %in% df2$values)) %>%
mutate(paired = row_number()) %>%
pivot_longer(cols = -paired, values_to = 'value', names_to = NULL) %>%
select(value, paired)
-輸出
# A tibble: 6 × 2
value paired
<chr> <int>
1 apples 1
2 x 1
3 oranges 2
4 z 2
5 bananas 3
6 y 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/418891.html
標籤:
