R 链接数据帧中的行

R 链接数据帧中的行,r,R,我有一个4列的数据框 m <-c(1,2,3,4) e <-c('01/01/1970', '02/01/1981','03/05/1986','01/01/1970') z <-c(111,123, 151, 111) l <-c('XAR', 'XAR', 'XUI','XUI' ) q <-c(673, 673, 304, 455) df <- data.frame(m,e,z,l,q) m您所期望的输出并不完全清楚 在任何情况下,data.tabl

我有一个4列的数据框

m <-c(1,2,3,4)
e <-c('01/01/1970', '02/01/1981','03/05/1986','01/01/1970') 
z <-c(111,123, 151, 111)
l <-c('XAR', 'XAR', 'XUI','XUI' )
q <-c(673, 673, 304, 455)
df <- data.frame(m,e,z,l,q)

m您所期望的输出并不完全清楚

在任何情况下,
data.table
都可以轻松快速地识别具有公共值的行:

library(data.table)

# convert your data frame into data table
  setDT(df)

# create common id for rows with same values in 'e' AND 'z'
  df[, id_ez :=.GRP, by=.(e,z)]

# create common id for rows with same values in 'l' AND 'q'
  df[, id_lq :=.GRP, by=.(l,q)]


> head(df)
>    m          e   z   l   q id_ez id_lq
> 1: 1 01/01/1970 111 XAR 673     1     1
> 2: 2 02/01/1981 123 XAR 673     2     1
> 3: 3 03/05/1986 151 XUI 304     3     2
> 4: 4 01/01/1970 111 XUI 455     1     3
现在您可以得到一个两列输出,告诉您每个id喜欢哪个'm'

df[, .(m_linked=paste(m)), by=id_ez]

>    id_ez m_linked
> 1:     1        1
> 2:     1        4
> 3:     2        2
> 4:     3        3
如果要将此表转换为向量列表:

mysplit = split(a$V1, a$id_ez)
myresult = lapply(mysplit, as.character)

> myresult
$`1`
[1] "1" "4"

$`2`
[1] "2"

$`3`
[1] "3"

你的预期产出是多少?也许可以检查
igraph
描述链接的某种对象-这可能是一个简单的数据帧,有两列包含链接的m和m。当任何两个字段匹配时,即可能是e-Z、e-L、e-Q、Z-e、Z-L、Z-Q等,匹配就会发生。嗯,这有点棘手,因为您希望通过所有可能的4列对来标识至少两行中具有相同值的行。。。。我的回答只是部分回答,但我想你需要在问题中把这一点说得更清楚,希望有人能提出解决方案。谢谢你的反馈。我已经编辑了这个问题。