我们说我的数据框有两个变量和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"))
我需要创建一个名为&#34; new&#34;的新列。对于每个不同的&#34; nr&#34;价值根据&#34;日期&#34;价值,它应该是这样的:
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)=&gt; (新= 1)
(nr = 233,date = 2012/01/01)=&gt; (新= 2)...
for(nr = 234,date = 2012/01/01)应该有两个相同的列,其中new = 5,重复的行应保留在数据框中。
有谁知道怎么做?任何帮助将非常感谢! 谢谢!
答案 0 :(得分:4)
我并不完全确定我理解逻辑,但似乎您希望按两列分组,这里使用data.table
.GRP
解决方案
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
答案 1 :(得分:1)
使用base R
,
v1 <- do.call(paste, df)
df$new <- as.numeric(factor(v1, levels=unique(v1)))