r将一串数据拆分成多个列,按个别变量排序

时间:2017-11-27 16:42:50

标签: r tidyr

我有一个关于清理凌乱数据的简单问题。我有一个通过电子邮件发送给我的数据集,其中包含多个列,每个列都包含逗号分隔的数字字符串。传统上,这些数字中的每一个都应该是它自己的变量,但这并不是这些数据集给我的方式。以下是一些数据的示例:

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

请注意,列标题已更改,数值列为二进制0或1,其中1表示存在变量。

我遇到了问题,因为我一直在尝试的拆分功能要求我知道我需要多少列,然后在拆分后不要将变量排序到各自的列中。它变得非常复杂,并且要求我为包含字符串的每个单独的列编写单独的代码。

Id就像一个可以获取包含字符串的列的函数,将数据拆分为单独的排序列,使这些列成为二进制是或否,然后更改列名以指示原始列名和变量in那一栏。我喜欢这个适用于任何数据列,所以我不必重写或修改单个列的功能(假设所有列都是带有字符标题的数字字符串)。

提前致谢。

1 个答案:

答案 0 :(得分:3)

我们可以执行a = df2[df2.A.diff().shift(-1).ffill() >= 2] #same as a = df2[df2.A.diff().shift(-1).ffill().ge(2)] print (a) A B C 1 2 5 3 2 7 8 16 ,然后使用strsplit获取频率

mtabulate