# У меня есть данный фрейм данных:
numbers <- c(5,5,5,5,3,3,1,1,1)
outputs <- c('red','blue','blue','purple','red','yellow','red','orange','blue')
data <- data.frame(numbers,outputs)
data
#Я хочу объединить все цвета, связанные с каждым уникальным числом, в строку. Мой желаемый результат:
numbers <- c(5,3,1)
output1 <- c('red','blue','yellow')
output2 <- c('blue','yellow','orange')
output3 <- c('blue','na','blue')
output4 <- c('purple','na','na')
data <- data.frame(numbers,output1,output2,output3,output4)
#Как лучше это сделать?
Вы можете использовать этот код:
numbers <- c(5,5,5,5,3,3,1,1,1)
outputs <- c('red','blue','blue','purple','red','yellow','red','orange','blue')
data <- data.frame(numbers,outputs)
data
library(dplyr)
library(tidyr)
library(data.table)
data %>%
mutate(n = rowid(numbers)) %>%
pivot_wider(names_from = n, values_from = outputs, names_prefix = "output")
Выход:
# A tibble: 3 × 5
numbers output1 output2 output3 output4
<dbl> <chr> <chr> <chr> <chr>
1 5 red blue blue purple
2 3 red yellow NA NA
3 1 red orange blue NA
добавьте data2 <- перед таким кодом: data2 <- data %>% mutate(n = rowid(numbers)) %>% pivot_wider(names_from = n, values_from = outputs, names_prefix = "output")
. Теперь результат data2
.
У меня есть еще один вопрос, если у вас есть время. Как мне получить этот вывод в свой собственный фрейм данных с именем data2?