如何使用其他变量值和序列有条件地创建类别

时间:2019-02-02 00:18:01

标签: r function data.table reshape tidyr

我很高兴创建一个函数,该函数允许我使用一组其他变量值的顺序来创建一个变量的类别。

  

具体来说,我想要一个函数:

     
      
  1. 在变量E1variable和{{1}的值的每种组合开始的first时间创建变量A的类别B }   出现在数据集中。
  2.   
  3. 在变量IDE2和{{1}的值的每种组合开始的variable时间创建变量second的类别A }   出现在数据集中。
  4.   
  5. 在变量BID和{{1}的值的每种组合开始的E3时间创建变量variable的类别third }   出现在数据集中。
  6.   
  7. 在变量AB和{{1}的值的每种组合开始的ID时间创建变量En的类别variable }   出现在数据集中。
  8.   

#sample数据:

nth

#输入数据:

A

#期望的输出:

B

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

首先将变量转换为字符向量以进行适当的强制,然后使用data.table

sampleDT$variable = as.character(sampleDT$variable)

sampleDT[, variable := paste(variable,1:.N,sep = ""), by = c("A", "B", "ID")]

这根据观察到的ABID的组合创建唯一的计数。

这将获得以下输出:

    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

,如有必要,您可以重新订购。