Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 处理变量之间关系的数据帧_R_Dataframe_Mapping - Fatal编程技术网

R 处理变量之间关系的数据帧

R 处理变量之间关系的数据帧,r,dataframe,mapping,R,Dataframe,Mapping,我有两个数据框,它们描述了三种变量之间的关系。这些数据帧如下所示: df1 <- data.frame(id = c("y1", "y2", "y3"), x1 = c(1, 0, 0), x2 = c(0, 1, 0), x3 = c(0, 1, 1)) df2 <- data.frame(item = c("z1", "z2", "z3"),

我有两个数据框,它们描述了三种变量之间的关系。这些数据帧如下所示:

df1 <- data.frame(id = c("y1", "y2", "y3"), 
                  x1 = c(1, 0, 0), 
                  x2 = c(0, 1, 0), 
                  x3 = c(0, 1, 1))
df2 <- data.frame(item = c("z1", "z2", "z3"), 
                  x1 = c(1, 1, 1), 
                  x2 = c(0, 1, 0), 
                  x3 = c(0, 1, 1))
本质上,每个数据帧的colname中标记的x变量解释了y和z变量之间的关系。我想要的输出是y1、y2和y3的每个变量。每个变量都应该是和之匹配的z变量的向量。例如,y1应该包含cz1、z2、z3,因为y1对应于x1,而x1对应于所有三个z项

我已经尝试了各种嵌套for循环和apply语句,但迄今为止还没有找到解决方法。

类似的东西

library(tidyverse)
df1 %>% 
  gather(k, v1, -id) %>% 
  filter(v1 != 0) %>% 
  inner_join(gather(df2, k,v2, -item) %>% filter(v2 != 0), by="k") %>% 
  group_by(id) %>% 
  summarise(n=paste(unique(item), collapse = ","))
# A tibble: 3 x 2
      id        n
  <fctr>    <chr>
1     y1 z1,z2,z3
2     y2    z2,z3
3     y3    z2,z3
df1 %>% 
  gather(k, v1, -id) %>%  
  filter(v1 != 0) %>% 
  rowwise() %>% 
  mutate(res=paste(df2$item[ select(df2, k) == 1 ], collapse=",")) %>% 
  ungroup()
# A tibble: 4 x 4
      id     k    v1      res
  <fctr> <chr> <dbl>    <chr>
1     y1    x1     1 z1,z2,z3
2     y2    x2     1       z2
3     y2    x3     1    z2,z3
4     y3    x3     1    z2,z3