首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将4列中的值合并为一个唯一值

将4列中的值合并为一个唯一值
EN

Stack Overflow用户
提问于 2014-06-23 04:32:34
回答 4查看 763关注 0票数 0

我想在4列中组合每一行的值,以获得单个唯一值,并在R中创建这些值的新列。例如,我有一个数据帧,如下所示:

代码语言:javascript
复制
 Col_1   Col_2  Col_3  Col_4
  1      23       45    12 
  0      45       17    4
  0     667       60    5
  64     123      299   5
  87      23      60    6

现在我想要的新列col_5应该在它的所有行中包含一个唯一的值,表示这4个值……例如,第一行的是(1,23,45,12),这在我的数据框中是唯一的组合,但列中的单个值不是,因此我想在col_5中为所有行分配此组合的唯一值。请在R中建议一个函数。

此外,如果组合出现多次,则col_5中此类重复的值应该是相同的。

我尝试过使用DT[, lapply(.SD,sum), by=list(col_1,col_2,col_3,col_4)]DT[, Mean:=mean(col_4), by=list(col_1,col_2,col_3)],但它没有给我提供唯一的值。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-23 04:45:16

通过以下方式:

代码语言:javascript
复制
df$Col_5 <- paste(df$Col_1,df$Col_2,df$Col_3,df$Col_4,sep=",")

你会得到想要的结果。另一种替代方案(灵感来自@beginneR)是:

代码语言:javascript
复制
df$Col_5 <- do.call(paste, c(df, sep=","))

正如@beginneR所指出的,这不能是一个数字变量:

代码语言:javascript
复制
> class(df[,5])
[1] "character"

当你想要一个数值时,你也可以这样做:

代码语言:javascript
复制
df$Col_5 <- paste0(sprintf("%03s",df$Col_1),sprintf("%03s",df$Col_2),sprintf("%03s",df$Col_3),sprintf("%03s",df$Col_4))

当你想要它是数字的时候:

代码语言:javascript
复制
df$Col_5 <- as.numeric(paste0(sprintf("%03s",df$Col_1),sprintf("%03s",df$Col_2),sprintf("%03s",df$Col_3),sprintf("%03s",df$Col_4)))
票数 3
EN

Stack Overflow用户

发布于 2014-06-23 05:01:48

您可以使用interaction()获取数值。这将创建一个因子,然后您可以将其转换为数字

代码语言:javascript
复制
dd$Col_5 <- as.numeric(interaction(dd[1:4], drop=T))

数字本身是任意的,但对于每种组合都是唯一的。

票数 3
EN

Stack Overflow用户

发布于 2014-06-23 16:07:47

如果dd是数据集:

代码语言:javascript
复制
library(qdap)
transform(dd, Col_5=paste2(dd,sep=","))

代码语言:javascript
复制
colpaste2df(dd, list(Col_5=1:4),sep=",")
     Col_1 Col_2 Col_3 Col_4     Col_5
1     1    23    45    12   1,23,45,12
2     0    45    17     4    0,45,17,4
3     0   667    60     5   0,667,60,5
4    64   123   299     5 64,123,299,5
5    87    23    60     6   87,23,60,6
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24355480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档