r 将一串数据拆分为多列,按各个变量排序
r split a string of data into multiple columns, sorted by individual variables
我有一个关于清理杂乱数据的简单问题。我有一个通过电子邮件发送给我的数据集,其中包含多个列,每个列都包含一个逗号分隔的数字字符串。传统上,这些数字中的每一个都应该是它自己的变量,但这不是这些数据集给我的方式。这是一些数据的示例:
indication treatment
1,2 3
2 2,1
1,3 2,3
请想象这些数据集包含近 100 列和数千行,并且每一列中的变量数量各不相同。我的目标是导入这样的数据集,然后拆分每一列,使字符串中的每个变量都在自己的列中,但每一列的拆分方式是将每个唯一变量分类到自己的列中。像这样:
indication_1 indication_2 indication_3 treatment_1 treatment_2 treatment_3
1 1 0 0 0 1
0 1 0 1 1 0
1 0 1 0 1 1
请注意,header 列已更改,数值列为二进制 0 或 1,其中 1 表示存在变量。
我遇到了问题,因为我一直在尝试的拆分函数要求我知道我需要多少列,然后在拆分后不要将变量分类到它们自己的列中。它变得相当复杂,需要我为每个包含字符串的单独列编写单独的代码。
我喜欢一个函数,它可以获取包含字符串的列,将数据拆分为单独的排序列,使这些列成为二进制的是或否,然后更改列名以指示原始列名和该列中的变量。我希望它适用于任何数据列,因此我不必为各个列重写或修改函数(假设所有列都是带有字符标题的数字字符串)。
提前致谢。
我们可以做一个 strsplit
然后用 mtabulate
得到频率
library(qdapTools)
do.call(cbind, lapply(df, function(x) mtabulate(strsplit(x, ","))))
# indication.1 indication.2 indication.3 treatment.1 treatment.2 treatment.3
#1 1 1 0 0 0 1
#2 0 1 0 1 1 0
#3 1 0 1 0 1 1
我有一个关于清理杂乱数据的简单问题。我有一个通过电子邮件发送给我的数据集,其中包含多个列,每个列都包含一个逗号分隔的数字字符串。传统上,这些数字中的每一个都应该是它自己的变量,但这不是这些数据集给我的方式。这是一些数据的示例:
indication treatment
1,2 3
2 2,1
1,3 2,3
请想象这些数据集包含近 100 列和数千行,并且每一列中的变量数量各不相同。我的目标是导入这样的数据集,然后拆分每一列,使字符串中的每个变量都在自己的列中,但每一列的拆分方式是将每个唯一变量分类到自己的列中。像这样:
indication_1 indication_2 indication_3 treatment_1 treatment_2 treatment_3
1 1 0 0 0 1
0 1 0 1 1 0
1 0 1 0 1 1
请注意,header 列已更改,数值列为二进制 0 或 1,其中 1 表示存在变量。
我遇到了问题,因为我一直在尝试的拆分函数要求我知道我需要多少列,然后在拆分后不要将变量分类到它们自己的列中。它变得相当复杂,需要我为每个包含字符串的单独列编写单独的代码。
我喜欢一个函数,它可以获取包含字符串的列,将数据拆分为单独的排序列,使这些列成为二进制的是或否,然后更改列名以指示原始列名和该列中的变量。我希望它适用于任何数据列,因此我不必为各个列重写或修改函数(假设所有列都是带有字符标题的数字字符串)。
提前致谢。
我们可以做一个 strsplit
然后用 mtabulate
得到频率
library(qdapTools)
do.call(cbind, lapply(df, function(x) mtabulate(strsplit(x, ","))))
# indication.1 indication.2 indication.3 treatment.1 treatment.2 treatment.3
#1 1 1 0 0 0 1
#2 0 1 0 1 1 0
#3 1 0 1 0 1 1