[英]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.