3 回答

TA貢獻1963條經驗 獲得超6個贊
讓我們給你的數據打電話。DF
> aggregate(id ~ brand, data = DF, c)
brand id
1 RadioShack 2308
2 Rag & Bone 4466
3 Ragu 1830, 4518
4 Ralph Lauren 1638, 2719, 2720, 2721, 2722
另一種選擇aggregate是:
result <- aggregate(id ~ brand, data = DF, paste, collapse = ",")
這會產生同樣的結果id不是list更多。感謝@Frank的評論。去看class在每一欄中嘗試:
> sapply(result, class)
brand id
"factor" "character"
正如@DavidArenburg在評論中提到的,另一種選擇是使用toString職能:
aggregate(id ~ brand, data = DF, toString)

TA貢獻1813條經驗 獲得超2個贊
一條干凈的線條data.table
library(data.table)
setDT(DF)
有兩種選擇:
結果作為一份清單
DF[ , .(id = list(id)), by = brand]
brand id
1: RadioShack 2308
2: Rag & Bone 4466
3: Ragu 1830,4518
4: Ralph Lauren 1638,2719,2720,2721,2722
>
結果為字符串
DF[ , .(id = paste(id, collapse=",")), by = brand]
brand id
1: RadioShack 2308
2: Rag & Bone 4466
3: Ragu 1830,4518
4: Ralph Lauren 1638,2719,2720,2721,2722
注
即使這兩個結果出現同樣的(即當您打印它們時,它們看起來是相同的),它們實際上是非常不同的,并且允許不同的功能。
也就是說,使用List選項(第一個選項),您就可以在源文件上執行功能。idS.
后者將允許您更容易地顯示信息(包括導出到CSV或excel),但要在id需要把他們接回去。
- 3 回答
- 0 關注
- 643 瀏覽
添加回答
舉報