我有一個資料框如下:
df <- data.frame(matrix(NA, nrow = 5, ncol = 1))
colnames(df) <- "father"
df$father <- c("A", "B", "B","C","D")
df$id <- c("C", "E","F","G","H")
df$pop <- c("ref","ref","ref","val","val")
這使:
father id pop
1 A C ref
2 B E ref
3 B F ref
4 C G val
5 D H val
那么如果在“father”中出現“id”,則pop的值應該是出現在father所在行的那個。例如,在這個例子中,“C”同時出現在“father”和“id”中,在父親 C 中,pop 是 val,然后,我希望 C 作為 id 的 pop 是 val,如下所示:
father id pop
1 A C val
2 B E ref
3 B F ref
4 C G val
5 D H val
有任何想法嗎?
uj5u.com熱心網友回復:
您可以嘗試以下操作
require(dplyr)
require(magrittr)
merge(x = df,
y = df,
by.x = 'id',
by.y = 'father',
all.x = T) %>%
mutate(., pop = ifelse(is.na(pop.y), pop.x, pop.y)) %>%
subset(., select = c('father', 'id', 'pop'))
這個想法是通過merge(因為all.x=T)對自身執行左連接,并通過 選擇想要的值mutate。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/336878.html
上一篇:解決renderDatatable中as.datatable中的警告
下一篇:在R中計數大于20的觀察值
