Как преобразовать конкретные строки в столбцы в г? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть df в R только одной колонки оценок еды от амазонки.

head(food_ratings)
          product.productId..B001E4KFG0
1         review/userId: A3SGXH7AUHU8GW
2        review/profileName: delmartian
3               review/helpfulness: 1/1
4                     review/score: 5.0
5               review/time: 1303862400
6 review/summary: Good Quality Dog Food

Строки повторяются, поэтому строки с 7 по 12 имеют одинаковую информацию о другом пользователе (строка 7).Этот шаблон повторяется много раз.

Поэтому мне нужно, чтобы каждая группа из 6 строк распределялась в одной строке из 6 столбцов, чтобы позже я мог подгруппировать, например, обзор / сводку в соответствии с их обзором./score.

Я использую RStudio 1.0.143

РЕДАКТИРОВАТЬ: меня попросили показать вывод dput(head(food_ratings, 24)), но он был слишком большим независимо от используемого числа.Большое спасибо

1 Ответ

0 голосов
/ 30 мая 2018

Я взял ваши данные и добавил к нему еще 2 фальшивых пользователей.Используя tidyr и dplyr, вы можете создавать новые столбцы и сворачивать данные в красивый data.frame.Вы можете использовать select из dplyr, чтобы удалить столбец id, если он вам не нужен, или изменить порядок столбцов.

library(tidyr)
library(dplyr)

df %>% 
  separate(product.productId..B001E4KFG0, into = c("details", "data"), sep = ": ") %>% 
  mutate(details = sub("review/ ", "", details)) %>% 
  group_by(details) %>% 
  mutate(id = row_number()) %>% 
  spread(details, data)


# A tibble: 3 x 7
     id helpfulness profileName score summary                 time       userId        
  <int> <chr>       <chr>       <chr> <chr>                   <chr>      <chr>         
1     1 1/1         delmartian  5.0   Good Quality Dog Food   1303862400 A3SGXH7AUHU8GW
2     2 1/1         martian2    1.0   Good Quality Snake Food 1303862400 123456        
3     3 2/5         martian3    5.0   Good Quality Cat Food   1303862400 123654  

data:

df <- structure(list(product.productId..B001E4KFG0 = c("review/userId: A3SGXH7AUHU8GW", 
"review/profileName: delmartian", "review/helpfulness: 1/1", 
"review/score: 5.0", "review/time: 1303862400", "review/summary: Good Quality Dog Food", 
"review/userId: 123456", "review/profileName: martian2", "review/helpfulness: 1/1", 
"review/score: 1.0", "review/time: 1303862400", "review/summary: Good Quality Snake Food", 
"review/userId: 123654", "review/profileName: martian3", "review/helpfulness: 2/5", 
"review/score: 5.0", "review/time: 1303862400", "review/summary: Good Quality Cat Food"
)), class = "data.frame", row.names = c(NA, -18L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...