【问题标题】:How to add a date to each row for a column in a data frame?如何为数据框中的列的每一行添加日期?
【发布时间】:2015-05-22 09:23:01
【问题描述】:
df <- data.frame(DAY = character(), ID = character()) 

我正在运行(for i in DAYS[i]) 并获取每天的 ID 并将它们存储在数据框中

df <- rbind(df, data.frame(ID = IDs))

我想在循环中的每一行的第二列中添加DAY[i]。 我该怎么做?

【问题讨论】:

  • 这不是创建data.frame的正确方法。最好运行循环并在循环内创建向量。然后在循环之后,从不同的向量创建 data.frame。
  • 你不需要任何循环。 R 不是 Java。请告诉我们DAY 以及期望的结果应该是什么样子。
  • 输入:ID Day1 Day2 输出:ID DAY,其中 DAY 介于 Day1 和 Day2 之间

标签: r loops dataframe


【解决方案1】:

正如@Pascal 所说,这不是在 R 中创建数据框的最佳方式。R 是一种矢量化语言,因此通常您不需要 for 循环。

我假设每个 ID 都是唯一的,因此您可以创建一个从 1 到 10 的 ID 向量:

ID <- 1:10

然后,您需要为您的DAYs 提供一个向量,该向量可以与您的 ID 长度相同,或者可以是 recycled(即,如果您只有一定天数以相同的顺序重复,则可以有一个更小的向量被重用)。使用c() 创建一个具有多个值的向量:

DAY <- c(1, 2, 9, 4, 4)
df <- data.frame(ID, DAY)
df

#    ID DAY
# 1   1   1
# 2   2   2
# 3   3   9
# 4   4   4
# 5   5   4
# 6   6   1
# 7   7   2
# 8   8   9
# 9   9   4
# 10 10   4

或者使用包含唯一值的DAY 向量:

DAY <- sample(1:100, 10, replace = TRUE)
df <- data.frame(ID, DAY)
df
#     ID DAY
#  1   1  61
#  2   2  30
#  3   3  32
#  4   4  97
#  5   5  32
#  6   6  74
#  7   7  97
#  8   8  73
#  9   9  16
#  10 10  98

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2020-12-12
    • 2021-02-01
    相关资源
    最近更新 更多