R 链接数据帧中的行
我有一个4列的数据框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
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列对来标识至少两行中具有相同值的行。。。。我的回答只是部分回答,但我想你需要在问题中把这一点说得更清楚,希望有人能提出解决方案。谢谢你的反馈。我已经编辑了这个问题。