首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何组合每个代表不同响应值的数据框列?

如何组合每个代表不同响应值的数据框列?
EN

Stack Overflow用户
提问于 2019-05-30 04:10:07
回答 1查看 38关注 0票数 0

我有人口统计调查数据,其中变量X的回答被记录在3个单独的列中。col1仅包含1,col2仅包含2,col3包含其他所有内容。没有重叠的回答,因此当受访者回答"1“时,同一行中的col2col3的单元格为空。我想合并所有3列(有3000+响应,所以手动做这是不可能的)。我应该注意到,这个数据框中有100+列,我还需要在其他变量上使用它。

我尝试了gather()apply()命令,但没有太多成功。

(参考此问题:r collapsing data from multiple columns into one)

apply命令组合了每一列,所以我猜我只需要修改我的参数?我不确定该怎么做(这里有点新手)。

代码语言:javascript
复制
df$New <- apply(df, 1, function(x) paste(x, collapse = ","))

感谢您的帮助/建议!

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 08:40:36

你会用gather() %>% summarise(paste(..., collapse = ", "))吗?我使用的是你链接到上面的例子。

代码语言:javascript
复制
library(tidyverse)

df <- 
  tibble(
    id = 1:4,
    variable_1 = c('Var1', NA, NA,'Var1'),
    variable_2 = c('Var2', 'No', NA, NA),
    variable_3 = c(NA, NA, 'Var3', NA),
    variable_4 = c(NA, 'Var4', NA, NA),
    variable_5 = c(NA, 'No', 'Var5', NA),
    variable_6 = c(NA, NA, 'Var6', NA) 
  )


df %>% 
  # pivot everything besides id
  gather(var, response, -id) %>%
  # optional
  filter(!is.na(response)) %>% 
  # the method
  group_by(id) %>% 
  summarise(sentence = paste(response, collapse = ", ")) %>% 
  ungroup()

#    id sentence        
#     1 Var1, Var2      
#     2 No, Var4, No    
#     3 Var3, Var5, Var6
#     4 Var1   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56367805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档