r - 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 = "_")
我希望这有足够的意义,我猜应该很容易。
解决方案
循环可能更容易,但......
data$ctr = unlist(sapply(table(data$new_v), function(n)1:n))
然后你可以做
data$new_v <- paste(data$new_v, data$ctr, sep = ".")
这会让你的单身人士(如 B)仍然有 .1
推荐阅读
- python - 有没有更好的方法以更短的行抓取 MSFT 数据?我已经尝试过了,但得到的问题是“模块”对象不可调用
- python-3.x - 单击按钮时的Python PyQt5终端命令执行问题
- postgresql - postgreSQL & PL/pgSQL:varchar(36) 的值太长,但我昨天将字段扩大到 60
- android - RecyclerView 中的 NullPointerException
- powershell - powershell管道如何在本机程序之间传输Unicode?
- excel - 使用 VBA 运行存储过程
- php - 删除括号前后的html
- matlab - 如何使用 Raspberry 在 Matlab 中读取 MMA8542q 加速度计传感器
- react-native - 反应本机黑屏没有错误?
- objective-c - 使用 OCMock 模拟内部对象并更改实例选择器的行为