gpt4 book ai didi

r - 拆分一列用逗号分隔的数据,并将输出重新编码为因数

转载 作者:行者123 更新时间:2023-12-04 03:22:42 24 4
gpt4 key购买 nike

我正在尝试清除一些错误输入的数据。变量的问题允许从五个选择中选择多个答案,编号为1到5。已按照以下方式输入数据(这只是一个示例-实际数据中有更多的变量和更多的观察结果框架):

data
V1
1 1, 2, 3
2 1, 2, 4
3 2, 3, 4, 5
4 1, 3, 4
5 1, 3, 5
6 2, 3, 4, 5

这是一些代码来重新创建示例数据:
data = data.frame(V1 = c("1, 2, 3", "1, 2, 4", "2, 3, 4, 5", 
"1, 3, 4", "1, 3, 5", "2, 3, 4, 5"))

我真正需要的是要被更多地对待的数据...二进制数据-就像一组“是/否”问题一样-进入了一个看起来像这样的数据帧:
data
V1.1 V1.2 V1.3 V1.4 V1.5
1 1 1 1 NA NA
2 1 1 NA 1 NA
3 NA 1 1 1 1
4 1 NA 1 1 NA
5 1 NA 1 NA 1
6 NA 1 1 1 1

目前,实际的变量名称无关紧要,我可以轻松地解决它。同样,丢失的元素是“O”,“NA”还是空格也没有太大关系,同样,我以后可以修复此问题。

我已经尝试过使用 transform包中的 reshape函数以及 strsplit来填充其他内容,但是我却无法做自己想要的事情。
我也查看了关于Stackoverflow的许多其他相关问题,但它们似乎并不是一个完全相同的问题。

最佳答案

您只需要编写一个函数并使用apply即可。首先是一些伪数据:

##Make sure you're not using factors
dd = data.frame(V1 = c("1, 2, 3", "1, 2, 4", "2, 3, 4, 5",
"1, 3, 4", "1, 3, 5", "2, 3, 4, 5"),
stringsAsFactors=FALSE)

接下来,创建一个接受一行并根据需要进行转换的函数
make_row = function(i, ncol=5) {
##Could make the default NA if needed
m = numeric(ncol)
v = as.numeric(strsplit(i, ",")[[1]])
m[v] = 1
return(m)
}

然后使用 apply并转置结果
t(apply(dd, 1, make_row))

关于r - 拆分一列用逗号分隔的数据,并将输出重新编码为因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10100887/

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