получение данных из внешнего CSV-файла в R - PullRequest
0 голосов
/ 04 сентября 2018

Этот пост похож на этот мой пост сопоставление набора данных с данными в CSV-файле в R , но здесь есть другой внешний источник и структура этого внешнего CSV-файла и три группы, поэтому существует проблема.

У меня есть CSV-файл, который имеет только один столбец

,"x"
1,"11202 3322 2018"
2,"11271 3322 2018"
3,"11353 2261 2018"
4,"11353 3322 2018"
5,"11353 3380 2018"
6,"11418 2247 2018"
7,"11418 2261 2018"
8,"11418 2316 2018"
9,"11418 3322 2018"
10,"11418 3740 2018"
11,"11511 979 2018"
12,"11514 196 2017"
13,"11514 377 2017"

3 группы указаны через пробел. Это значит

group1,group2,group3
11202,  3322,  2018 

этот формат взят из внешнего источника, и я не могу его изменить.

Это мои данные.

dataset=structure(list(group1 = c(11202L, 11271L, 11353L, 11353L, 11353L, 
11418L, 11418L, 11418L, 11418L, 11222L, 11223L, 11224L, 11225L, 
11226L, 11227L, 11228L), group2 = c(3322L, 3322L, 2261L, 3322L, 
3380L, 2247L, 2261L, 2316L, 3322L, 222L, 222L, 222L, 222L, 222L, 
222L, 222L), group3 = c(2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 
2018L, 2018L, 2018L, 111L, 111L, 111L, 111L, 111L, 111L, 111L
), x1 = 1:16), .Names = c("group1", "group2", "group3", "x1"), class = "data.frame", row.names = c(NA, 
-16L))

поэтому эти группы были во внешнем CSV-файле

group1  group2  group3  x1
11202   3322    2018    1
11271   3322    2018    2
11353   2261    2018    3
11353   3322    2018    4
11353   3380    2018    5
11418   2247    2018    6
11418   2261    2018    7
11418   2316    2018    8
11418   3322    2018    9

Я не работаю с этим. Я должен работать с новой группой. Итак, выходной набор данных

group1  group2  group3  x1
11222   222      111    10
11223   222      111    11
11224   222      111    12
11225   222     111     13
11226   222      111    14
11227   222      111    15
11228   222      111    16

Как провести такой матч. Здесь три ключевых столбца.

1024 * редактировать * тусклый (набор данных) [1] 16 4

1 Ответ

0 голосов
/ 04 сентября 2018

Я предполагаю, что у вас есть два столбца, и предполагается, что первый столбец - это просто последовательность (как вы ответили на вопросы, я предпочитаю мое предположение), если у вас есть только один столбец, выполните ту же операцию, о которой я упоминал ниже, используя "," в качестве шаблона, а затем отбрасываем первый столбец результирующего фрейма данных

data<-data.frame(col=c("1 2 3","5 6 7"))

   col
  1 2 3
  5 6 7
 out<-do.call('rbind',(str_split(data$col,pattern = " ")))
 colnames(out)<-c('group1','group2','group3')

 print(out)
 group1 group2 group3
 "1"    "2"    "3"   
 "5"    "6"    "7"   
...