首页 > 解决方案 > 如何将值分配给具有唯一值的行?

问题描述

例如我有:

df[1,] <- c('a','b','c')
df[2,] <- c('h','a','f')
df[3,] <- c('d','e','g')
df[4,] <- c('h','a','g')

假设我想创建一个新列,该列按前 2 列每行中前 2 个值的唯一性对数据进行分组。所以最终结果看起来像:

df[1,] <- c('a','b','c',1)
df[2,] <- c('h','a','f',2)
df[3,] <- c('d','e','g',3)
df[4,] <- c('h','a','g',2)

我该怎么办?

标签: r

解决方案


您可以在纯 R 中使用它:

df <- data.frame("c1"=character(0), "c2"=character(0), "c3"=character(0))
df[1,] <- c('a','b','c')
df[2,] <- c('h','a','f')
df[3,] <- c('d','e','g')
df[4,] <- c('h','a','g')

df$c4 <- as.integer(factor(paste0(df$c1, df$c2)))

这个想法是连接前两列的内容,将其转换为因子,然后仅使用因子的整数表示。


推荐阅读