我有这个数据
df <- data.frame(scientific_name = c("Mandevilla grazielae",
"Aosa parvifolia",
"Mandevilla grazielae",
"Dyckia ebracteata"),
collection_number = c("254", "658","445", "568"))我想在一个名为“凭单”的栏目中把这些植物的收藏编号结合起来。
scientific_name vouchers
Mandevilla grazielae 254, 445
Aosa parvifolia 658
Dyckia ebracteata 568到目前为止,这就是我所能做的:
x <- sqldf('SELECT * FROM df GROUP BY scientific_name ORDER BY scientific_name ASC')然后我开始学到更多..。
x <- sqldf('SELECT scientific_name, COUNT(collection_number)
FROM df GROUP BY scientific_name ORDER BY scientific_name ASC')我想知道上面的计数函数是否可以连接“凭单”列中的"collection_number“列。我也试过了,但没成功。
我会非常感激的!
发布于 2022-09-05 14:15:12
在base R中,使用aggregate和paste
aggregate(cbind(vouchers = collection_number) ~ scientific_name, df, toString)-output
scientific_name vouchers
1 Aosa parvifolia 658
2 Dyckia ebracteata 568
3 Mandevilla grazielae 254, 445发布于 2022-09-06 12:36:43
1)使用与问题中相同的设置的,使用group_concat连接与科学名称关联的所有集合编号。1表示输出中的第一列或在其位置写出列名,即scientific_name。
library(sqldf)
sqldf("select scientific_name, group_concat(collection_number) as vouchers
from df
group by 1
order by 1")给予:
scientific_name vouchers
1 Aosa parvifolia 658
2 Dyckia ebracteata 568
3 Mandevilla grazielae 254,4452)使用tidyverse的应该这样做:
library(dplyr)
df %>%
group_by(scientific_name) %>%
summarize(vendors = toString(collection_number)) %>%
ungroup %>%
arrange(scientific_name)给予:
# A tibble: 3 × 2
scientific_name vendors
<chr> <chr>
1 Aosa parvifolia 658
2 Dyckia ebracteata 568
3 Mandevilla grazielae 254, 445https://stackoverflow.com/questions/73610387
复制相似问题