【发布时间】:2021-08-15 22:58:39
【问题描述】:
一个数据框df 对于其数字向量id0 的每个不同值都有一行 - 但id0 的单元格中的尾随零表示必须沿其转换文件的重要组。以下是对df 的 12 条观察:
row id0 id0_ntz
a 111000 3
b 111010 1
c 112345 0
d 111974 0
e 112090 1
f 114000 3
g 114099 0
h 555001 0
i 555012 0
j 461000 3
k 461020 1
l 111090 0
让我们将id0 的每个值都用三个尾随零(即id0_ntz == 3)称为“big id”,将每个不符合此模式的值称为“小身份证。”上面的 12 个 obs 包括三个 big id(row 值 a、f 和 j)。对于每个 big id,我需要:
- 查找与第 i 个 big id 的前三位相匹配的
id0的所有其他值 - 将每次匹配的
id0的值添加到称为idj的j 个离散向量之一,其中j 是从1 到 的后缀j 有效地计算嵌套在第 i 个 big id 中的匹配 little ids 的数量。
如果df 只包括上面显示的 12 行,正确的结果应该是这样的:
row id0 id0_ntz id1 id2 id3
a 111000 3 111010 111974 111090
b 111010 1 NA NA NA
c 112345 0 NA NA NA
d 111974 0 NA NA NA
e 112090 1 NA NA NA
f 114000 3 114099 NA NA
g 114099 0 NA NA NA
h 555001 0 NA NA NA
i 555012 0 NA NA NA
j 461000 3 461020 NA NA
k 461020 1 NA NA NA
l 111090 0 NA NA NA
我对任何动态解决此问题的解决方案持开放态度(即,与 big ids、little ids 的数量以及由此产生的 idj 向量的数量无关)。
P.S.:我需要在 id0_ntz == 2 和 1 处再次做同样的事情,但对这个已发布问题的可接受答案只需要解决 id0_ntz == 3 处的问题的解决方案。
【问题讨论】:
-
似乎
df[1,6]是错误/错字?id0中没有111090吗? -
这不是错字 -
111090出现在df[12,2]
标签: r loops apply data-manipulation data-cleaning