首页 > 解决方案 > R:将两列合并为具有唯一值的单列

问题描述

感谢您帮助将两列合并为一列,同时保持新值的唯一性。我试图找到解决这个问题的方法,但由于我在 R 中做循环很糟糕,如果有些人展示了正确的方法,也许会更好。

假设我有一个这样的数据集:

place   year
A   2018
A   2018
B   2018
C   2018
C   2018
C   2019
C   2019

我想创建一个新列(变量),它结合了两列(地点和年份),但在重复的情况下添加了一个数字后缀。例如,C 有 2018 年和 2019 年两种情况。如果有意义的话,我希望新变量的新值为“C_2018.1”和“C_2018.2”。我知道如何将变量组合成字符串,但添加非唯一值的数量是我不确定的。也许我需要循环?

data$new_v <- paste(data$place, data$year, sep = "_")

我希望这有足够的意义,我猜应该很容易。

标签: rdata-manipulation

解决方案


循环可能更容易,但......

data$ctr = unlist(sapply(table(data$new_v), function(n)1:n))

然后你可以做

data$new_v <- paste(data$new_v, data$ctr, sep = ".")

这会让你的单身人士(如 B)仍然有 .1


推荐阅读