簡體   English   中英

是否有R函數可根據一個列變量查找make列值?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM