【问题标题】:How to restrict full_join() duplicates? - R如何限制 full_join() 重复? -R
【发布时间】:2017-04-05 18:53:26
【问题描述】:

我是一名新手 R 程序员。下面是我正在使用的数据框。 我目前遇到了来自tidyversefull_join() 的过滤问题。

library(tidyverse)

set.seed(1234)
df <- data.frame(
              trial = rep(0:1, each = 8),
              sex = rep(c('M','F'), 4),
              participant = rep(1:4, 4),
              x = runif(16, 1, 10),
              y = runif(16, 1, 10))

df

我目前正在做以下操作来做full_join()

df <- df %>% mutate(k = 1)
df <- df %>% 
   full_join(df, by = "k") 

我正在限制结果以获得试验之间同一参与者的积分组合

df2 <- filter(df, sex.x == sex.y, participant.x == participant.y, trial.x != trial.y)
df3 <- filter(df2, participant.x == 1)
df3

在这一步,我遇到了麻烦。我不在乎点的顺序。如何将重复项压缩成一行?

谢谢

【问题讨论】:

  • 不确定如何让 df % full_join(df,by="k") 运行。 df中没有“k”。
  • 好收获! full_join 命令之前的那一行应该是df %&gt;% mutate(k = 1) 编辑:我将对问题进行编辑
  • 所以查看您的数据,我假设您想根据前五列中看到的重复项来压缩行。对吗?
  • 我可能在重复你自己。本质上,前 5 行包含我需要的所有信息,因为点的顺序无关紧要。

标签: r tidyverse


【解决方案1】:

根据您正在考虑的列,使用重复功能。第一个将根据前 5 列清除重复项。最后一个将根据

剔除重复项
df3[!duplicated(df3[,1:5]),]

df3[!duplicated(df3[,7:11]),]

【讨论】:

  • 花了我一段时间来理解这里的推理。但是,本质上,我想检查这些列中的重复值,因为如果我这样做,我只会恢复所有唯一的无序配对。
猜你喜欢
  • 2020-07-05
  • 2019-10-15
  • 1970-01-01
  • 2019-10-13
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 2017-12-10
  • 2013-10-23
相关资源
最近更新 更多