我有一个包含19列的df,现在我想在R中将两列(df$klasse
和df$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的菜鸟,所以如果有人知道在哪里看或使用什么,请告诉我!
提前致谢!
答案 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