我有这个数据。
datetime user_id song_id
1 2019-03-26 6 31
2 2019-03-26 4 30
3 2019-03-26 3 31
4 2019-03-26 9 34
5 2019-03-26 10 21
6 2019-03-26 8 38
7 2019-03-26 8 33
8 2019-03-26 8 28
9 2019-03-26 6 30
我想做第三列,所以数据看起来像这样
datetime user_id song_id usersong_id
1 2019-03-26 6 31 631
2 2019-03-26 4 30 430
3 2019-03-26 3 31 331
4 2019-03-26 9 34 934
5 2019-03-26 10 21 1021
6 2019-03-26 8 38 838
7 2019-03-26 8 33 833
8 2019-03-26 8 28 828
9 2019-03-26 6 30 630
我尝试了这段代码。
df %>%
group_by(user_id, song_id) %>%
summarize(count = n()) %>%
mutate(usersong_id = c(user_id, song_id))
但是,它给了我这个错误:
错误:列
usersong_id
的长度必须为1(组大小),而不是2
答案 0 :(得分:2)
我们可以使用unite
library(dplyr)
library(tidyr)
df %>%
unite(user_song_id, user_id, song_id, sep = "", remove = FALSE) %>%
select(names(df), user_song_id)
# datetime user_id song_id user_song_id
#1 2019-03-26 6 31 631
#2 2019-03-26 4 30 430
#3 2019-03-26 3 31 331
#4 2019-03-26 9 34 934
#5 2019-03-26 10 21 1021
#6 2019-03-26 8 38 838
#7 2019-03-26 8 33 833
#8 2019-03-26 8 28 828
#9 2019-03-26 6 30 630
答案 1 :(得分:2)
您可以使用以下任何一种方式:
df <- df %>%
mutate(usersong_id = paste0(user_id, song_id))
df <- df %>%
unite(user_song_id, user_id, song_id, sep = "", remove = FALSE)
df$usersong_id <- paste0(df$user_id, df$song_id)