R pivot_wide()参数表示不同的行数或
我有以下名为R pivot_wide()参数表示不同的行数或,r,data.table,pivot,tidyr,R,Data.table,Pivot,Tidyr,我有以下名为x的data.table对象: month.option som.month all.year 56.6% diff -0.9% 当我执行以下操作时: x %>% pivot_wider(names_from = month.option, values_from = som.month) %>% select(diff, everything()) %>%
x
的data.table对象:
month.option som.month
all.year 56.6%
diff -0.9%
当我执行以下操作时:
x %>% pivot_wider(names_from = month.option, values_from = som.month) %>%
select(diff, everything()) %>%
set_names(c("Dif vs MA", "SOM YTD", "SOM AA"))
我得到了以下错误:data.frame中的错误(row=row\u id,col=col\u id):参数意味着不同的行数:0,2。但是我不明白原因,因为x
是一个2x2 data.table。如果有人知道我没有看到的一个可能的问题,我将感谢您的纠正
作为旁注,所有列的类型都是字符
,如果这是任何有用的信息如果我们想使用透视(pivot)
,我们可以通过将值fn
指定为I
library(dplyr)
library(tidyr)
x %>%
pivot_wider(names_from = month.option, values_from = som.month, values_fn = I)
# A tibble: 1 x 2
# all.year diff
# <I<chr>> <I<chr>>
#1 56.6% -0.9%
然而,使用数据的转置
可以很容易地解决这类问题
data.table::transpose(x, make.names = 'month.option')
# all.year diff
#1 56.6% -0.9%
或者将碎片整理
与一起用作可存储行
,这将更直接
library(tibble)
deframe(x) %>%
as_tibble_row
# A tibble: 1 x 2
# all.year diff
# <chr> <chr>
#1 56.6% -0.9%
数据
x使用相同的pivot\u wider()
尝试此tidyverse
解决方案。您遇到问题,因为函数无法正确识别行。创建id是解决方案:
#Code
df %>% mutate(id=1) %>%
pivot_wider(names_from = month.option,values_from=som.month) %>%
select(-1)
输出:
# A tibble: 1 x 2
all.year diff
<chr> <chr>
1 56.6% -0.9%
#一个tible:1 x 2
全年差异
1 56.6% -0.9%
使用的一些数据:
#Data
df <- structure(list(month.option = c("all.year", "diff"), som.month = c("56.6%",
"-0.9%")), class = "data.frame", row.names = c(NA, -2L))
#数据
df如果您有数据。表
我们也可以使用dcast
:
library(data.table)
dcast(x, rowid(month.option)~month.option, value.var = 'som.month')
# month.option all.year diff
#1: 1 56.6% -0.9%
# A tibble: 1 x 2
all.year diff
<chr> <chr>
1 56.6% -0.9%
#Data
df <- structure(list(month.option = c("all.year", "diff"), som.month = c("56.6%",
"-0.9%")), class = "data.frame", row.names = c(NA, -2L))
library(data.table)
dcast(x, rowid(month.option)~month.option, value.var = 'som.month')
# month.option all.year diff
#1: 1 56.6% -0.9%