1

我有一个包含 19 列的 df,现在我想在 R 中将两列 ( df$klasseand df$grp) 与 classinteger合并在一起,使元素彼此相邻 ( 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 的菜鸟,所以如果有人知道在哪里看或使用什么,请告诉我!

提前致谢!

4

3 回答 3

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" ...
于 2013-10-30T13:05:12.910 回答
1

单程:

transform(df, KG=paste(klasse, grp, sep='.'))
于 2013-10-30T13:06:23.480 回答
-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
于 2013-10-30T13:17:55.770 回答