【发布时间】:2019-06-26 13:51:29
【问题描述】:
如果能帮助我创建一个函数,该函数允许我使用一组其他变量值的顺序来创建一个变量的类别,我将不胜感激。
具体来说,我想要一个函数:
- 创建变量
variable的类别E1first时间变量A、B和ID的值的每个组合 出现在数据集中。- 创建变量
variable的类别E2second时间变量A、B和ID的值的每个组合 出现在数据集中。- 创建变量
variable的类别E3third时间变量A、B和ID的值的每个组合 出现在数据集中。- 创建变量
variable的类别Ennth时间变量A、B和ID的值的每个组合 出现在数据集中。
#样本数据:
rowdT<-structure(list(A = c("a1", "a2", "a1", "a1", "a2", "a1", "a1",
"a2", "a1"), B = c("b2", "b2", "b2", "b1", "b2", "b2", "b1",
"b2", "b1"), ID = c("3", "4", "3", "1", "4", "3", "1", "4", "1"
), E = c(0.621142094943352, 0.742109450696123, 0.39439152996948,
0.40694392882818, 0.779607277916503, 0.550579323666347, 0.352622183880119,
0.690660491345867, 0.23378944873769)), class = c("data.table",
"data.frame"), row.names = c(NA, -9L))
sampleDT <- melt(rowdT, id.vars = c("A", "B", "ID"))
#输入数据:
A B ID variable value
1: a1 b2 3 E 0.6211421
2: a2 b2 4 E 0.7421095
3: a1 b2 3 E 0.3943915
4: a1 b1 1 E 0.4069439
5: a2 b2 4 E 0.7796073
6: a1 b2 3 E 0.5505793
7: a1 b1 1 E 0.3526222
8: a2 b2 4 E 0.6906605
9: a1 b1 1 E 0.2337894
#预期输出:
A B ID variable value
4: a1 b1 1 E1 0.4069439
1: a1 b2 3 E1 0.6211421
2: a2 b2 4 E1 0.7421095
7: a1 b1 1 E2 0.3526222
3: a1 b2 3 E2 0.3943915
5: a2 b2 4 E2 0.7796073
9: a1 b1 1 E3 0.2337894
6: a1 b2 3 E3 0.5505793
8: a2 b2 4 E3 0.6906605
提前感谢您的帮助。
【问题讨论】:
-
sampleDT%>%group_by(A,B,ID)%>%mutate(variable=paste0('E',1:n()) -
当我添加
)时,它给出了错误:Error: This function should not be called directly -
它对我有用。
library(dplyr);library(data.table);sampleDT%>%group_by(A,B,ID)%>%mutate(variable=paste0('E',1:n())) -
在我做
detach("package:plyr", unload = TRUE)之后它工作。谢谢,@A.Suliman。
标签: r function data.table reshape tidyr