我不理解使用pivot_longer的一些基本内容。让我分享我的结果。这里有张桌子。温度指标都是双倍的。
device_id < 12°C < 16°C < 18°C < 21°C > 21°C
412222 0 0.355 0.645 0.000 0.000
C000037 0 0.000 0.048 0.539 0.412
P000000 0 0.000 0.105 0.620 0.275
W000043 0 0.000 0.057 0.562 0.380
W000069 0 0.359 0.641 0.000 0.000
W000075 0 0.000 0.036 0.521 0.443以及dput()的输出,希望这将允许您重新构建。
structure(list(device_id = c("412222", "C000037", "P000000",
"W000043", "W000069", "W000075"), `< 12°C` = c(0, 0, 0, 0, 0,
0), `< 16°C` = c(0.355, 0, 0, 0, 0.359, 0), `< 18°C` = c(0.645,
0.048, 0.105, 0.057, 0.641, 0.036), `< 21°C` = c(0, 0.539, 0.62,
0.562, 0, 0.521), `> 21°C` = c(0, 0.412, 0.275, 0.38, 0, 0.443
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-6L))下面的代码不符合我的预期:
temp <-
risk_by_device %>%
tidyr::pivot_longer(
cols = c(select(., contains("°C")), na.rm = TRUE),
names_to = "Score",
values_to = "percentage"
)
Error in `as_indices_impl()`:
! Must subset columns with a valid subscript vector.
x Subscript has the wrong type `tbl_df<
< 12°C: double
< 16°C: double
< 18°C: double
< 21°C: double
> 21°C: double
>`.
i It must be numeric or character.
Backtrace:
1. risk_by_device %>% ...
23. rlang::cnd_signal(x)
Error in as_indices_impl(x, vars, call = call, strict = strict) :我在带有字符串的daa集合上运行了非常类似的代码。这并不是说pivot_longer不适用于双打,对吗?
发布于 2022-06-27 08:22:04
根据tidyr参数的帮助文件,cols采用“将列转换为更长的格式”。因此,代码中的4.行是简单的
cols = contains("°C"),你可以用长格式获取数据。由于您希望将所有列( id-col除外)枢轴,所以您也可以指定
cols = -device_id,甚至更短
cols = -1,https://stackoverflow.com/questions/72767966
复制相似问题