我很高兴创建一个函数,该函数允许我使用一组其他变量值的顺序来创建一个变量的类别。
具体来说,我想要一个函数:
- 在变量
E1
,variable
和{{1}的值的每种组合开始的first
时间创建变量A
的类别B
} 出现在数据集中。- 在变量
ID
,E2
和{{1}的值的每种组合开始的variable
时间创建变量second
的类别A
} 出现在数据集中。- 在变量
B
,ID
和{{1}的值的每种组合开始的E3
时间创建变量variable
的类别third
} 出现在数据集中。- 在变量
A
,B
和{{1}的值的每种组合开始的ID
时间创建变量En
的类别variable
} 出现在数据集中。
#sample数据:
nth
#输入数据:
A
#期望的输出:
B
在此先感谢您的帮助。
答案 0 :(得分:4)
首先将变量转换为字符向量以进行适当的强制,然后使用data.table
sampleDT$variable = as.character(sampleDT$variable)
sampleDT[, variable := paste(variable,1:.N,sep = ""), by = c("A", "B", "ID")]
这根据观察到的A
,B
和ID
的组合创建唯一的计数。
这将获得以下输出:
A B ID variable value
1: a1 b2 3 E1 0.6211421
2: a2 b2 4 E1 0.7421095
3: a1 b2 3 E2 0.3943915
4: a1 b1 1 E1 0.4069439
5: a2 b2 4 E2 0.7796073
6: a1 b2 3 E3 0.5505793
7: a1 b1 1 E2 0.3526222
8: a2 b2 4 E3 0.6906605
9: a1 b1 1 E3 0.2337894
,如有必要,您可以重新订购。