[英]Is there a R function to find make column values based on one column variable?
我正在嘗試根據另一列中的關系身份將相關對象的空間坐標放入新列中。 但是,我還沒有找到正確的方法。 這是我的數據框的樣子
object parent x-pos y-pos
1: Z A 0.5 0.7
2: B A 0.1 0.0
3: C E 4.6 2.5
4: D E 5.6 5.0
5: A B 0.2 1.0
6: P B 0.4 2.0
我要添加到此數據框中的是基於“父級列”中父級信息的兩個新的x-pos-parent和y-pos-parent列,針對“對象”列中的每個唯一對象? 任何幫助將不勝感激...
預期的df應該看起來
like so
object parent x-pos y-pos x-pos-parent y-pos-parent
1: Z A 0.5 0.7 0.2 1.0
2: B A 0.1 0.0 0.2 1.0
如果只深入left_join
,則可以執行left_join
或等效操作:
library(dplyr)
DF%>%
left_join(., ., by = c('parent' = 'object'))%>%
select(-parent.y)
object parent x.pos.x y.pos.x x.pos.y y.pos.y
1 Z A 0.5 0.7 0.2 1
2 B A 0.1 0.0 0.2 1
3 C E 4.6 2.5 NA NA
4 D E 5.6 5.0 NA NA
5 A B 0.2 1.0 0.1 0
6 P B 0.4 2.0 0.1 0
您也可以執行data.table
更新data.table
:
DT <- as.data.table(DF)
DT[DT
, on = .(parent = object)
, `:=`(x_pos_par = i.x.pos
, y_pos_par = i.y.pos)]
DT
object parent x.pos y.pos x_pos_par y_pos_par
1: Z A 0.5 0.7 0.2 1
2: B A 0.1 0.0 0.2 1
3: C E 4.6 2.5 NA NA
4: D E 5.6 5.0 NA NA
5: A B 0.2 1.0 0.1 0
6: P B 0.4 2.0 0.1 0
如果您有多個級別的遞歸,則應查看軟件包igraph
。
數據
Lines <- "object parent x-pos y-pos
1 Z A 0.5 0.7
2 B A 0.1 0.0
3 C E 4.6 2.5
4 D E 5.6 5.0
5 A B 0.2 1.0
6 P B 0.4 2.0"
DF <- read.table(text = Lines)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.