城市 | 年龄 | 姓名 | Q11_1 | Q11_4 | Q11_5 | Q11_6 | Q11_7 |
---|---|---|---|---|---|---|---|
…… | …… | …… | 是的 | 不 | 不 | 不 | 不 |
…… | …… | …… | 不 | 是 | 不 | 不 | 不 |
…… | …… | …… | 不 | 不 | 是 | 不 | 不 |
…… | …… | …… | 不 | 不 | 不 | 是 | 不 |
…… | ... | …… | 不 | 不 | 不 | 不 | 是 |
…… | …… | …… | 不 | 不 | 不 | 不 | 不 |
... | …… | …… | 不 | 不 | 不 | 不 | 不 |
我有一个数据集,看起来像这样的表,人们被问到他们是否有任何特定的疾病(Q11列),他们只能选择一列是。但是每种疾病被分成多列,我想创建一个名为Diagnosis的新列,列出他们所患的疾病,而不是yes或no值。我希望这个新列有四个值:其中,如果Q11_1==是,则值为“阿尔茨海默病”。如果Q11_4==是,则值为“痴呆”。Q11_5==是,则值为“帕金森”,并且如果Q11_6或Q11_7==是,则值为“其他”。
我试着在tidyverse库中使用ifelse语句:
df %〉%突变(诊断= ifelse(Q11_1==“是”,“阿尔茨海默病”,NA),ifelse(Q11_4 ==“是”,“痴呆”,NA),ifelse(Q11_5 ==“是”,“帕金森病”,NA))
但我意识到我只是添加了多个列。我试图只添加一个额外的列到现有的数据集,看起来像下面的表,它的值要么是“阿尔茨海默氏症”,“痴呆症”,“帕金森”,或“其他”。
| 诊断|
| --------------|
| 阿尔兹海默|
| 痴呆|
| 帕金森|
| 其他|
enter image description here
3条答案
按热度按时间js81xvg61#
这是pivot_longer的一个典型例子:
然后数据变为:
xu3bshqb2#
如果ATMOST每行有一个
yes
,在R中你可以这样做:如果每行有多个
yes
,则必须在分配给该行之前聚合它们,例如,粘贴,tostring,列表等。jjjwad0x3#
与
ifelse
相比,在这种情况下,您可能更喜欢case_when
。请注意,与case...when
的其他实现一样,数据集的每一行都将被分配与第一个评估为true的条件相对应的值。