【发布时间】:2019-06-11 00:04:20
【问题描述】:
我正在尝试编写一个 R 脚本,该脚本将根据位于几个不同列中的值和一个 ID 字段创建新列,然后使用基于值字段的重复值填充这些列。这是起始数据框的样子:
df
ID row1 row2
1 1 x <NA>
2 1 <NA> <NA>
3 1 <NA> y
4 2 <NA> x
5 2 y <NA>
6 3 <NA> x
7 3 <NA> <NA>
8 3 <NA> <NA>
9 3 x <NA>
10 4 <NA> x
这是我希望创造的:
df
ID row1 row2 x1 y1 x2 y2 x3 y3 x4
1 1 x <NA> x <NA> <NA> <NA> <NA> NA <NA>
2 1 <NA> <NA> x <NA> <NA> <NA> <NA> NA <NA>
3 1 <NA> y x y <NA> <NA> <NA> NA <NA>
4 2 <NA> x <NA> <NA> x <NA> <NA> NA <NA>
5 2 y <NA> <NA> <NA> x y <NA> NA <NA>
6 3 <NA> x <NA> <NA> <NA> <NA> x NA <NA>
7 3 <NA> <NA> <NA> <NA> <NA> <NA> x NA <NA>
8 3 <NA> <NA> <NA> <NA> <NA> <NA> x NA <NA>
9 3 x <NA> <NA> <NA> <NA> <NA> x NA <NA>
10 4 <NA> x <NA> <NA> <NA> <NA> <NA> NA x
>
我已经能够根据存在的每个值-ID 组合自动创建空列。没有任何值会占据它们的值对组合不需要创建列,在本示例中,这将是列假设 y4。我尝试在 for 循环中使用嵌套的 if 语句来自动化,但我无法让值在必要时重复。关于如何在 ID 字段与列匹配时从上面复制数据框的值的任何想法?
【问题讨论】:
-
我不认为这是一个好主意,创建无限量的填充了非常值的空列-您的数据大小会爆炸得非常快。你为什么需要这样的东西?增加 2 列来跟踪
y和x的位置不是更好吗? -
这个想法是根据每个 ID 值组合创建一个唯一列,因为我正在处理的数据在不同的 ID 中有多个关联的值,我试图将这些函数与它们的特定路径匹配他们在数据框中的位置。实际上,使用我的方法只创建了 15 个额外的列。
标签: r