gpt4 book ai didi

r - 基于 R 中的现有列创建新列

转载 作者:行者123 更新时间:2023-12-04 10:39:56 25 4
gpt4 key购买 nike

这是我的数据框的示例。它来自一项调查,最初的问题是:“你在哪里?标记所有适用的选项。”

Code   Option1   Option2   Option3   Option4
101 A C NA NA
102 B D NA NA
103 A B D NA
104 D NA NA NA
105 A B C D

我想转换此数据,以便每一列都是位置之一,如果您位于 4 个位置中的任何一个,则会得到 0/1:
Code   A   B   C   D
101 1 0 1 0
102 0 1 0 1
103 1 1 0 1
104 0 0 0 1
105 1 1 1 1

我尝试使用 ifelse 语句,但我不断收到错误消息。有什么建议?谢谢!

最佳答案

使用 tidyverse

library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = -Code, values_drop_na = TRUE) %>%
mutate(n = 1) %>%
select(-name) %>%
pivot_wider(names_from = value, values_from = n, values_fill = list(n = 0)) %>%
select(Code, LETTERS[1:4])
# Code A B C D
#1 101 1 0 1 0
#2 102 0 1 0 1
#3 103 1 1 0 1
#4 104 0 0 0 1
#5 105 1 1 1 1

或使用 mtabulate
library(qdapTools)
cbind(df1[1], +(mtabulate(as.data.frame(t(df1[-1]))) > 0))

或使用 melt/dcast
library(data.table)
dcast(melt(setDT(df1), id.var = 'Code', na.rm = TRUE), Code ~ value, length)

关于r - 基于 R 中的现有列创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59975802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com