是否有基于一个列变量查找make列值的R函数?
我试图根据另一列中的关系标识,将相关对象的空间坐标放入新列中。然而,我还没有找到正确的方法。 下面是我的数据框的外观是否有基于一个列变量查找make列值的R函数?,r,dplyr,tidyr,mutate,R,Dplyr,Tidyr,Mutate,我试图根据另一列中的关系标识,将相关对象的空间坐标放入新列中。然而,我还没有找到正确的方法。 下面是我的数据框的外观 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
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
如果此操作只进行一次,则可以执行左联合或等效操作:
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更新联接:
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
我不清楚预期的产出会是什么样子。你能手工写下你期望得到的结果吗?我的最佳猜测是,第1行有父级A,因此我们查看object=A的第5行,并将x_pos和y_pos值拉入第1行的新列x_pos_parent和y_pos_parent。这就是你想要的吗?Gregor,谢谢!这正是我需要的。。。
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
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)