首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多列记录为单变量

将多列记录为单变量
EN

Stack Overflow用户
提问于 2014-03-26 16:21:45
回答 1查看 379关注 0票数 0

我有一些定性的数据,我已经编码成不同的类别,我想为子组提供摘要。RQDA软件包很适合编写采访代码,但我一直在努力为开放式调查的回复创建摘要。我成功地将编码的文件导出到HTML中,并将其复制/粘贴到Excel中。我现在有500行,所有类别都在不同的列中,但是相同的代码可能出现在不同的列中。例如,一些数据:

代码语言:javascript
复制
a <- c("ResponseA", "ResponseB", "ResponseC", "ResponseD", "NA")
b <- c("ResponseD", "ResponseC", "NA", "NA","NA")
c <- c("ResponseB", "ResponseA", "ResponseE", "NA", "NA")
d <- c("ResponseC", "ResponseB", "ResponseA", "NA", "NA")
df <- data.frame (a,b,c,d)

我希望能运行这样的程序

代码语言:javascript
复制
df$ResponseA <- recode (df$a | df$b | df$c, "
                        'ResponseA' = '1'; 
                         else='0' ")
df$ResponseB <- recode (df$a | df$b | df$c, "
                        'ResponseB' = '1'; 
                         else='0' ")

简而言之,我希望扫描9列并将其重新编码到一个二进制变量中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-26 16:33:34

如果我正确理解这个问题,也许你可以这样做:

代码语言:javascript
复制
## Convert your data into a long format first
dfL <- cbind(id = sequence(nrow(df)), stack(lapply(df, as.character)))

## The next three lines are mostly cleanup
dfL$id <- factor(dfL$id, sequence(nrow(df)))
dfL$values[dfL$values == "NA"] <- NA
dfL <- dfL[complete.cases(dfL), ]

## `table` is the real workhorse here
cbind(df, (table(dfL[1:2]) > 0) * 1)
#           a         b         c         d ResponseA ResponseB ResponseC ResponseD ResponseE
# 1 ResponseA ResponseD ResponseB ResponseC         1         1         1         1         0
# 2 ResponseB ResponseC ResponseA ResponseB         1         1         1         0         0
# 3 ResponseC        NA ResponseE ResponseA         1         0         1         0         1
# 4 ResponseD        NA        NA        NA         0         0         0         1         0
# 5        NA        NA        NA        NA         0         0         0         0         0

您还可以尝试以下方法:

代码语言:javascript
复制
(table(rep(1:nrow(df), ncol(df)), unlist(df)) > 0) * 1L
#    
#     NA ResponseA ResponseB ResponseC ResponseD ResponseE
#   1  0         1         1         1         1         0
#   2  0         1         1         1         0         0
#   3  1         1         0         1         0         1
#   4  1         0         0         0         1         0
#   5  1         0         0         0         0         0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22667164

复制
相关文章

相似问题

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