假设我有一个包含两个变量和 213005 个观测值的数据框,它看起来像这样:
df <- data.frame(nr=c(233, 233, 232, 231, 234, 234, 205),
date=c("2012/01/02", "2012/01/01", "2012/01/01", "2012/01/02", "2012/01/01", "2012/01/01", "2012/01/05"))
我需要根据“日期”值为每个不同的“nr”值创建一个名为“new”的新列,它应该如下所示:
df <- data.frame(nr=c(233, 233, 232, 231, 234, 234, 205),
date=c("2012/01/02", "2012/01/01", "2012/01/01", "2012/01/02",
"2012/01/01", "2012/01/01", "2012/01/05"),
new=c(1, 2, 3, 4, 5, 5, 6))
(nr=233, date=2012/01/02) => (new=1)
(nr=233, date=2012/01/01) => (new=2) ...
对于 (nr=234, date=2012/01/01) 应该有两个相同的列,new=5,重复的行应该留在数据框中。
有人知道怎么做吗?任何帮助将不胜感激! 谢谢!
最佳答案
我不确定我是否理解其中的逻辑,但您似乎想按两列进行分组,这是一个使用 .GRP
的简单 data.table
解决方案
library(data.table)
setDT(df)[, new := .GRP, .(nr, date)][]
# nr date new
# 1: 233 2012/01/02 1
# 2: 233 2012/01/01 2
# 3: 232 2012/01/01 3
# 4: 231 2012/01/02 4
# 5: 234 2012/01/01 5
# 6: 234 2012/01/01 5
# 7: 205 2012/01/05 6
关于r - 根据其他两列的值创建一个新的数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28850673/