Альтернативный код с помощью tidyr :: spread () моего кода с помощью tidyr :: pivot_wider () - PullRequest
0 голосов
/ 26 октября 2019

TLDR: У меня проблема с tidyr::pivot_wider(), и я подозреваю, что это может быть ошибка Tidyr. Мне нужен альтернативный код с tidyr :: spread () из моего кода ниже, чтобы выяснить, является ли это ошибкой tidyr или есть другая проблема. Или, если у вас есть идея, что может быть не так, пожалуйста, предоставьте ваше решение с tidyr::pivot_wider()


Я не могу предоставить данные для своего кода. Мои данные содержат 1694 строки, 11 переменных и пропущенные значения.

Вот мой код:

temp_data_tibb <- temp_data_tibb %>% 
  pivot_wider(names_from = Month, id_cols = ID, values_from = c("var1", "var2", "var3", "var4", "var5", "var6", "var7", "var8", "var9"))

Проблема заключается в том, что если я подмножеству части моих данных, то мой код работает нормально. С полными данными это дало мне ошибки типа:

Error: Invalid type returned by `vec_proxy_compare()`.
Call `rlang::last_error()` to see a backtrace.
In addition: Warning messages:
1: Values in `var1` are not uniquely identified; output will contain list-cols.
* Use `values_fn = list(var1 = list)` to suppress this warning.
* Use `values_fn = list(var1 = length)` to identify where the duplicates arise
* Use `values_fn = list(var1 = summary_fun)` to summarise duplicates 

и последние 5 строк ошибок повторяются для каждой переменной от values_from =. Я пытался найти проблемную строку путем постепенного создания подразделов и тестирования, но не могу найти ее, потому что проблема не в конкретной строке.

Пожалуйста, предоставьте альтернативное решение с помощью tidyr :: spread () или предоставьте другое решение, если оно у вас есть.

1 Ответ

0 голосов
/ 26 октября 2019

решаемая. Там, где несколько строк с одинаковыми ID и Month.

, я использовал этот код для поиска проблемы (возможно, он может помочь кому-то еще):

library(tidyverse)

# Load data from csv file.
orig_data <- read.csv(file="D:/Arch/data.csv", header=TRUE, sep=",")
temp_data <- orig_data


# Subset 3 months.
temp_data_first3M <- temp_data[temp_data$Month == "M1" | temp_data$Month == "M2" | temp_data$Month == "M3",]


# Replace "" with NA.
temp_data_first3M[temp_data_first3M == ""] <- NA

# Get frequency of all IDs (count of every similar value in ID column).
table_results <- as.data.frame(table(temp_data_first3M$ID))



names(table_results) <- c("ID", "Freq")

# Subset the rows that have Freq > 3
table_results_more_than_three <- table_results[table_results$Freq > 3,]

# View results.
View(table_results_more_than_three)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...