我有一个包含两列的数据框。我想创建一个新的数据框,其中列出了第一列中第一列的每个唯一值的第二列的所有值。我不想使用数据表。
经过几次试验和错误,我提出了以下建议。我想知道是否有更简单的(一步式),更快或更理想的方法来实现此目的,因为我将在其上运行的实际数据帧非常大。
$('i[data-toggle="tooltip"]').tooltip({
animated: 'fade',
placement: 'right'
});
谢谢。
答案 0 :(得分:1)
使用tidyverse
:
library(tidyverse)
df%>%
group_by(a)%>%
summarise(bs=glue::collapse(b,","))
# A tibble: 3 x 2
a bs
<dbl> <chr>
1 1. 6,7
2 2. 8,9
3 3. 10
答案 1 :(得分:1)
一种base R
方式
aggregate(b ~ a, df, FUN = toString)
# a b
#1 1 6, 7
#2 2 8, 9
#3 3 10
如果要保持输入数字,也许尝试创建一个列表列。
(df_new <- aggregate(b ~ a, df, FUN = list))
# a b
#1 1 6, 7
#2 2 8, 9
#3 3 10
str(df_new)
#'data.frame': 3 obs. of 2 variables:
# $ a: num 1 2 3
# $ b:List of 3
# ..$ 1: int 6 7
# ..$ 2: int 8 9
# ..$ 3: int 10
答案 2 :(得分:1)
aggregate(b ~ a, df, paste)
a b
1 1 6, 7
2 2 8, 9
3 3 10
答案 3 :(得分:0)
我们可以使用data.table
library(data.table)
setDT(df)[, .(b = toString(b)), by = a]
# a b
#1: 1 6, 7
#2: 2 8, 9
#3: 3 10