【问题标题】:Creating a column name dacade from year从年份创建列名 dacade
【发布时间】:2021-05-28 07:25:11
【问题描述】:

假设您在数据框中有一个变量年份(即列变量)。如果我们想在同一个数据框中创建/添加一个新的变量名十年,如果年份在 1960 年到 1969 年之间,十年变量的标签将为六十,依此类推。可能这并不难,但我对这种数据格式不熟悉。

【问题讨论】:

  • 你的专栏是什么格式的?它必须是字符“六十”还是可能是“60”?你有不同的世纪吗?如果是这样,你想区分几十年(2020 年代和 1920 年代)吗?请添加一些关于您的数据和要求的信息,可能还有一段您自己尝试过的代码。
  • @MartinWettstein 没有任何不同的世纪。年份在 1950 年到现在之间。如果可能的话,我想同时知道“六十”和“60”。

标签: r datetime formatting


【解决方案1】:

假设你在 XX 年只有几年。世纪,首先你需要创建一个字符变量来存储你的十年名称:

decades <- c("10s", "20s", "30s", "40s", "50s", "60s", "70s", "80s", "90s")

或者你得到同样的结果

decades <- paste(1:9 * 10, "s", sep = "")

然后

df$decades <- decades[(df$year - 1900) %/% 10]

%/% 是商,在它的帮助下,您可以根据需要更改解决方案

【讨论】:

  • 错误:分配的数据decades[(df$year - 1900)%/%10] 必须与现有数据兼容。 x 现有数据有 230 行。 x 分配的数据有 0 行。
  • 我可以看到你有几年后的XX。世纪,所以(df$year - 1900) %/% 10 这将是 11 或更多,而我定义的十年变量只有 9 个元素。如果这是您最早的日期,则需要将 1900 更改为 1950 并制作从 50 年代到 20 年代(对应于 2020 年代)的十年向量
  • 也许你的数据框不叫df? :)
【解决方案2】:

您可以为特定值使用自定义标签集合并循环数据。

df = data.frame(column = c(1965,1958,1971,1980,1989))

keys = list(list(1950,1959,"fifties"),
            list(1960,1969,"sixties"),
            list(1970,1979,"seventies"),
            list(1980,1989,"eighties"),
            list(1990,1999,"nineties"))
df$Label = NA
for(k in keys){
  df$Label[df$column >= k[[1]] & df$column <= k[[2]]]=k[[3]]
}

这个小程序的输出是:

> df
  column     Label
1   1965   sixties
2   1958   fifties
3   1971 seventies
4   1980  eighties
5   1989  eighties

您可以看到它很容易扩展并适应您的确切问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多