将同一df中的两列合并为sep =“。”

时间:2013-10-30 12:54:03

标签: r merge

我有一个包含19列的df,现在我想在R中将两列(df$klassedf$grp)与类integer合并在一起,使元素为彼此相邻(df$KG),而不是彼此之下,用“。”分隔。如下所示:

> df
klasse   grp    KG
  1       1     1.1
  1       1     1.1
  1       2     1.2
  1       2     1.2
  2       1     2.1

我想这是可能的,因为在R中有很多可能。但是,我无法找到解决方案..我试着调查cbind但这似乎没有做我想要的。现在我找到了函数reshape,但我认为这只适用于你想要将行转换为列(以及相反的方式)。我(仍)是关于R的菜鸟,所以如果有人知道在哪里看或使用什么,请告诉我!

提前致谢!

3 个答案:

答案 0 :(得分:1)

结果应该是数字吗?如果是,那么

df$KG <- df$klasse + 0.1 * df$grp


> df
  klasse grp  KG
1      1   1 1.1
2      1   1 1.1
3      1   2 1.2
4      1   2 1.2
5      2   1 2.1

如果您需要将结果作为字符,那么

df$KG1 <- paste(df$klasse, df$grp, sep='.')

> df
  klasse grp  KG KG1
1      1   1 1.1 1.1
2      1   1 1.1 1.1
3      1   2 1.2 1.2
4      1   2 1.2 1.2
5      2   1 2.1 2.1

> str(df)
'data.frame':   5 obs. of  4 variables:
 $ klasse: num  1 1 1 1 2
 $ grp   : num  1 1 2 2 1
 $ KG    : num  1.1 1.1 1.2 1.2 2.1
 $ KG1   : chr  "1.1" "1.1" "1.2" "1.2" ...

答案 1 :(得分:1)

一种方式:

transform(df, KG=paste(klasse, grp, sep='.'))

答案 2 :(得分:-1)

这是我的方法:

mydf <- data.frame(klasse = c(1, 1, 1, 1, 2), grp = c(1, 1, 2, 2, 1))


mydf$KG <- paste(mydf$klasse, mydf$grp, sep=".") #pasting them together as character
mydf$KGnum <- as.numeric(mydf$KG) # converting the characters to numeric if needed


> mydf
  klasse grp  KG KGnum
1      1   1 1.1   1.1
2      1   1 1.1   1.1
3      1   2 1.2   1.2
4      1   2 1.2   1.2
5      2   1 2.1   2.1

> str(mydf)
'data.frame':   5 obs. of  4 variables:
 $ klasse: num  1 1 1 1 2
 $ grp   : num  1 1 2 2 1
 $ KG    : chr  "1.1" "1.1" "1.2" "1.2" ...
 $ KGnum : num  1.1 1.1 1.2 1.2 2.1