【发布时间】:2018-11-10 23:05:01
【问题描述】:
这是我的可重现数据框:
library(tidyverse)
df <- structure(list(PN = c("41681", "16588", "34881",
"36917", "33116", "68447"), `2017-10` = c(0L,
0L, 0L, 0L, 0L, 0L), `2017-11` = c(0L, 1L, 0L, 0L, 0L, 0L), `2017-12` = c(0L,
0L, 0L, 0L, 1L, 0L), `2018-01` = c(0L, 0L, 1L, 1L, 0L, 0L), `2018-02` = c(1L,
0L, 0L, 0L, 0L, 0L), `2018-03` = c(0L, 0L, 0L, 0L, 0L, 0L), `2018-04` = c(0L,
0L, 0L, 0L, 0L, 1L), Status = c("OK", "NOK", "OK", "NOK", "OK",
"OK")), .Names = c("PN", "2017-10", "2017-11", "2017-12",
"2018-01", "2018-02", "2018-03", "2018-04", "Status"), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
长话短说......让我获得上述输出的两个步骤是:
1分析初期
mutate(n = parse_integer(str_replace_na(n, replacement = 0)))
2稍后分析
mutate(
Status =
ifelse(
(apply(.[, 2:7], 1, sum) > 0) &
(.[, 8] > 0),
"NOK",
"OK"
)
)
@joran 和 @akrun 两位堆栈战士告诉我,我“创建了一列字符矩阵”,这就是为什么我一直收到 “arrange_impl(.data, dots) 中的错误) : 参数 1 的类型矩阵不受支持" 错误。
用简单的英语我做了什么?我是那种还不了解原子向量和原子粒子之间区别的人。你能用简洁明了的方式回答吗?
或者您可以告诉我阅读 R for Data Science 中的 XYZ 章节或类似的内容。我也会接受(可能在 cmets 中)。
【问题讨论】:
-
这应该是
%>%中的一个问题。假设如果你在外面做,它是正常向量apply(df[2:7], 1, sum) > 0 [1] TRUE TRUE TRUE TRUE TRUE FALSE可能是某种错误 -
我没有看到任何字符矩阵列
-
@Moody_Mudskipper 如果你运行
mutate,然后检查str(我使用的是R 3.4.4`和dplyr_0.7.5) -
它来自
.[, 8] > 0,因为你有一个 tibble,而不是data.frame,它仍然是一个 tibble。改用.[[8]] > 0(测试df[, 8] > 0 & apply(df[, 2:7], 1, sum) > 0,然后df[[8]] > 0 & apply(df[, 2:7], 1, sum) > 0 -
mutate(Status = as.vector(Status))修复了原来的问题。问题是我不知道 problem 是什么。什么/如何/在哪里/为什么/何时创建“字符矩阵列”?我的原子浮点 R Inferno 错误 C## 是什么? Heeellllpppppp。谢谢。