【发布时间】:2017-04-05 18:53:26
【问题描述】:
我是一名新手 R 程序员。下面是我正在使用的数据框。
我目前遇到了来自tidyverse 的full_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 %>% mutate(k = 1)编辑:我将对问题进行编辑 -
所以查看您的数据,我假设您想根据前五列中看到的重复项来压缩行。对吗?
-
我可能在重复你自己。本质上,前 5 行包含我需要的所有信息,因为点的顺序无关紧要。