【发布时间】:2022-01-24 07:28:06
【问题描述】:
我正在尝试格式化我的数据,使其宽而不是长,我似乎遇到了将其从列表转换为任何可以让我改变其形式的问题。
library(stringr)
library(tidyr)
library(dplyr)
A <- as.list(c("v", "w", "x", "y", "NA"))
str(A)
X <- 5
G <- str_split_fixed(A, ", ", X)
G <- as.data.frame(A)
G <- G[-c(182, 183)] #irrelevant on example data my actual data is much longer
P <- G
P <- gsub("NA", "Z", as.character(P))#also irrelavent for example data
P <- str_split_fixed(P, ", ", X)
colnames(P) <- c("A", "B", "C", "D", "E")
Titles <- c("Time_Modifier", "Times", "Scrambles", "Blank", "ID")
T.1 <- strsplit(Titles, " ")
n <- nrow(P)
n/5
L <- rep(T.1, n/5)
T.T <- cbind(P, L)
T.T.1 <- subset(T.T, select = -c(B, C, D, E))
T.T.1 <- subset(T.T.1, L != "Blank")
我曾尝试使用 pivot_wider(),但出现此错误
pivot_wider(T.T.1,
names_from = L,
values_from = A
)
UseMethod("pivot_wider") 中的错误: 没有适用于“c('matrix', 'array', 'list')”类对象的“pivot_wider”方法
我也尝试过使用 pivot_wider_spec() 得到类似的错误。这让我认为 T.T.1 被存储为一个列表;哪个低,看吧。但是,我似乎无法将 T.T.1 更改为 pivot_wider 喜欢的数据类型。
我尝试使用 as.data.frame()、as.character 以及我能想到或找到的所有其他东西来转换 T.T.1。
T.T.1 <- as.data.frame(T.T.1)
pivot_wider(T.T.1,
names_from = L,
values_from = A
)
错误:必须使用有效的下标向量对列进行子集化。
x 下标的类型错误list。
i 必须是数字或字符。
T.T.1 <- as.character(T.T.1)
pivot_wider(T.T.1,
names_from = L,
values_from = A
)
UseMethod("pivot_wider") 中的错误: 没有适用于“字符”类对象的“pivot_wider”方法
非常感谢任何和所有的帮助。
【问题讨论】:
-
其实
pivot_wider(data.frame(T.T.1), ... ... ...为我工作。
标签: r pivot data-manipulation