BRAND ID FIRST_NAME CITY
6 1167 Sara Sarasota
6 1167 Jeffrey Sarasota
6 1167 Shane Sarasota
8 1167 Paul Lakewood Ranch
6 10931 Carol Grosse Pointe
6 10931 Nick Detroit
8 10931 William Grosse Pointe Farms
6 4935 Debra Lacoochee
6 4935 Mark Zephyr hills
6 4935 Michael Zephyr hills
我的.csv文件看起来像上面的表格,其中包含我需要在多个.csv文件中拆分的客户信息。
每个文件都需要按品牌和ID进行拆分。在上面的例子中,将有2个.csv文件,其中(Brand = 6,ID = 1167)有3个客户记录,(Brand = 8,ID = 1167)有1个客户记录。
我需要一些可以检测每个唯一ID的代码的帮助,因为我的数据文件中有30个不同的ID。
答案 0 :(得分:3)
使用data.table
包,我们可以使用以下内容:
library(data.table)
setDT(mydat)[, write.csv(c(.BY,.SD), paste0("BRAND_ID_", .BY, ".csv")), by=BRAND]
对于多列,我可以考虑添加一个帮助列,它是所需列组合的组合:
library(data.table)
setDT(mydat)[, tempcol:=paste(ID,BRAND,sep="_")]
setDT(mydat)[, write.csv(.SD, paste0("ID_BRAND_", .BY, ".csv")),by=tempcol]
这为ID和品牌的每个独特组合提供了5个文件。它们将保存到当前工作目录中。如果您希望将输出放在所需目录中,请阅读?write.csv
。
<强> 数据 强>:
read.table(text='BRAND ID FIRST_NAME CITY
6 1167 Sara Sarasota
6 1167 Jeffrey Sarasota
6 1167 Shane Sarasota
8 1167 Paul Lakewood_Ranch
6 10931 Carol Grosse_Pointe
6 10931 Nick Detroit
8 10931 William Grosse_Pointe_Farms
6 4935 Debra Lacoochee
6 4935 Mark Zephyr_hills
6 4935 Michael Zephyr_hills', header=T, quote="") -> mydat