R-从其他行提取值

如标题所示,我想从其他行中提取值。

尤其是,请考虑以下数据集:

id.in.group <- c(1,2,3,1,3)
group <- c(1,4,4)
trial <- c(1,3)
subject <- c("s7","s11","s3","s6","s9","s4","s12","s10","s1","s8","s2","s5","s7","s8")

df <- data.frame(group,id.in.group,trial,subject)

df$other1.id <- 0
df$other2.id <- 0

df$other1.id <- ifelse(df$id.in.group == "1",df$other1.id)
df$other2.id <- ifelse(df$id.in.group == "1",df$other2.id)

df$other1.id <- ifelse(df$id.in.group == "2",df$other1.id)
df$other2.id <- ifelse(df$id.in.group == "2",df$other2.id)

df$other1.id <- ifelse(df$id.in.group == "3",df$other1.id)
df$other2.id <- ifelse(df$id.in.group == "3",df$other2.id)

View(df)

鉴于组号(df $ group)和该组中其他组的ID(df $ other1.id和df $ other2.id),我想为每个试验和每个试验创建两个进一步的变量来显示主题,另两个主题的值,而不是它们的相对id.in.group,以获取下面的两个列

df$other1.subject<-c("s11","s4")
df$other2.subject<-c("s3","s2")

View(df)

例如,如果试验= 1且id.in.group = 1(或者,主题= s7),则other1.subject = s11,other2.subject = s3。我想为每个id.in.group(或每个主题)或每一行提取这样的值。

如果您以前没有做出任何尝试,请原谅,但老实说,我不知道如何解决该问题。我仍然愿意进一步澄清。

非常感谢您的所有帮助!

superhsq 回答:R-从其他行提取值

您需要将df自身保留两次-一次用于other1,第二次用于other2:

library(dplyr)
df %>% 
  left_join(
    df %>% 
      select(group,trial,other1.id = id.in.group,other1.subject = subject),by = c("group","trial","other1.id")
  ) %>% 
  left_join(
    df %>% 
      select(group,other2.id = id.in.group,other2.subject = subject),"other2.id")
  )
本文链接:https://www.f2er.com/3165194.html

大家都在问