2017-02-02 2 views
0

У меня есть большой файл CSV, например INPUT, с примерно 500 столбцами. У меня также есть DataFrame DF, который содержит подмножество заголовков столбцов INPUT, который изменяется на каждой итерации.Сравнение заголовков столбцов двух файлов для извлечения данных в R

Мне нужно получить данные только из тех столбцов INPUT, которые присутствуют в DF dataframe и записывают их в другой файл CSV, скажем, OUTPUT.

Короче говоря,

INPUT.csv:

ID,Col_A,Col_B,Col_C,Col_D,Col_E,Col_F,,,,,,,,,,,,,Col_S,,,,,,,,,,,,,,,,Col_Z 
1,009,abcd,67,xvz,33,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,oup,,,,,,,,,,,,,,,,,,90 
2,007,efgh,87,wuy,56,67,,,,,,,,,,,,,,,,,,,,,,,,,,,,ghj,,,,,,,,,,,,,,,,,,,,888 

печати (DF):

[1] "Col_D" "Col_Z" 
[3] "Col_F" "Col_S"  

output.csv

ID,Col_D,Col_Z,Col_F,Col_S 
1,xvz,90,50,oup 
2,wuy,888,67,ghj 

Я новичок, когда это относится к Р. Я бы предпочел для сопоставления da taframe с файлом INPUT, который будет автоматизирован, потому что я не хочу делать это каждый день, когда обновляется dataframe.

+0

прочитайте сначала 'input.csv' полностью, а затем подмножество –

+0

' input <- read.table (...); input [colnames (input)% in% DF] 'предполагается, что DF - это вектор с именами столбцов –

+0

' fread' - это все, что вам нужно ... 'data.table :: fread (" INPUT.csv ", select = c (" ID ", DF))' –

ответ

0

Я не уверен, что это ответ:

input <- read.table(...) 
input[colnames(input) %in% colnames(DF)] 
+0

ok, позвольте мне проверить его. Правильно ли синтаксис? – Raymond

+0

@ Рамкришна отвечает? –

+0

Да, это так. Большое спасибо человеку. – Raymond

0

Если я правильно понял, вам нужно импортировать INPUT.csv-файл внутри R, а затем сопоставить столбцы вашего DF с этими столбцами вашего INPUT, это правильно?

вы можете использовать функцию match или просто импортировать файл INPUT.csv внутри RStudio с помощью кнопки «Импорт набора данных» и подмножить его. Подмножество импортированных фреймов данных довольно просто. Если вы будете импортировать набор данных в качестве входных данных, то вы можете сделать подмножество этих столбцов следующим образом: INPUT[,c(1,2,4)]

и что получит Вас первый, второй и четвертый столбец входных наборов данных.

+0

Я могу сделать это вручную, но я пытаюсь найти способ автоматизировать этот процесс. Это возможно? – Raymond

+0

извините за задержку в ответе, у нас была мощность – Raymond

0

Во-первых, чтобы загрузить файл CSV прост:

dataframe_read <- read.csv('/Path/to/csv/') 

Если я правильно понимаю, что один dataframes столбцы всегда подмножеством, код выглядит следующим образом:

### Example Dataframes 
df1 <- data_frame(one = c(1,3,4), two= c(1,2,3), three = c(1,2,3)) 
df2 <- data_frame(one = c(1,3,4), three= c(1,2,3)) 

### Make new data frame 
df3 <- df1[,colnames(df2)] 

### Write new dataframe 
write.csv(df3, 'hello.csv') 
+0

Это я могу сделать вручную, я хочу автоматизировать весь процесс – Raymond

+0

Извините за задержку в ответе, у нас была власть. – Raymond

+0

Что значит автоматизировать? Как написать функцию/CRON? – Jenks

Смежные вопросы