在R中创建具有特定条件的新csv

时间:2015-09-13 18:32:58

标签: r csv

我是R的新手。我无法找到办法,

我有两个csv文件。 a.csv具有以下格式的数据(名称在此文件中是唯一的)

name, count
abc,  100
bcf,  234

b.csv具有以下格式的数据(id是唯一的,名称可以多次出现),

id,  name1, count
123, abc,   29
33,  bcg,   56
145, abc,   45

现在我需要为每个" name"创建一个新的csv文件。在a.csv中包含" name1"中的同名行第二个csv文件

例如

abc.csv should have
123, abc, 29
145, abc, 45

bcf.csv should be empty for the given files

提前致谢

2 个答案:

答案 0 :(得分:1)

首先尝试:

unique(data1[name %in% data2[,name1],])

当您使用非唯一键合并两个数据集时,这非常有用。如果对结果进行一些小的改动,你应该得到答案。

答案 1 :(得分:1)

library(dplyr)
df1 = data_frame(name = c("abc", "bcf"), count = c(100, 234))
df2 = data_frame(id = c(123, 33, 145), name1 = c("abc", "bcg", "abc"), count = c(29, 56, 45))

result = 
  df2 %>%
  rename(name = name1, count2 = count) %>%
  semi_join(df1) %>%
  group_by(name) %>%
  do(sub_df = {
    write.csv(.,
              sprintf("/tmp/%s.csv", first(.$name)),
              row.names = FALSE)
    .
  })