r - 根据其他两列的值创建一个新的数据框列

标签 r dataframe

假设我有一个包含两个变量和 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/

相关文章:

python - 搜索唯一单元格并乘以行(Python Pandas)

python - 删除行索引并将其恢复为列

r - 模型为空,e1071 包中的 SVM

对 R 中数据帧中阻塞行之间的随机列进行重新排序

r - 通过比较 r 中数据框中的现有变量来添加新变量

python - 更改数据框中的逗号分隔日期格式 20,190,927?

python - 值错误 : negative dimensions are not allowed using pandas pivot_table

r - 将水平分位数线添加到散点图 ggplot2 R

r - 从 R 向量的开头和结尾剪切元素

r - 如何在 Shiny 中使用自己的一组小部件创建多个页面