Pivot_wider : tydr Pivot table 填充了 NA 值

Pivot_wider : tydr Pivot table filled with NA values

我的数据是这样的:

structure(
  list(
    ID = c(1, 2, 3, 4, 5, 6),
    Compagny = c("x", "x", "x", "y", "y", "y"),
    Variable = c("size", "lenght", "diameter", "size", "lenght", "diameter"),
    Score = c(12, 15, 8, 20, 4, 7)
  ),
  row.names = c(NA, -6L),
  class = "data.frame"
)
ID Compagny Variable Score
1 x size 12
2 x lenght 15
3 x diameter 8
4 y size 20
5 y lenght 4
6 y diameter 7

我想更广泛地旋转以便变量是列:

ID Compagny size lenght diameter
1 x 12 15 8
2 y 20 4 7

我已经学习了本教程 因为我有同样的问题

我在Copy/paste上面找到这行代码:

d %>%
  group_by(name) %>%
  mutate(row = row_number()) %>%
  tidyr::pivot_wider(names_from = name, values_from = val) %>%
  select(-row)

那变成了

  PivoTable <- LongTable %>%
  group_by(score) %>%
  mutate(row = row_number()) %>%
  tidyr::pivot_wider(names_from = score, values_from = mean) %>%
  select(-row)

而且每一行我都有一个特殊的标识符。 它仍然不起作用,即使我没有适当的 table,而是一个具有 NA 值的矩阵(参见图片)

你可以这样做:

df %>% 
  pivot_wider(id_cols = -ID, names_from = Variable, values_from = Score) %>% 
  mutate(ID = row_number(), .before = Compagny)

# A tibble: 2 x 5
     ID Compagny  size lenght diameter
  <int> <chr>    <int>  <int>    <int>
1     1 x           12     15        8
2     2 y           20      4        7
ESGTable <- select(EU_ESG_PILLARS,compagny, variable_name, mean_value)
ESGTable <- tibble::rowid_to_column(ESGTable, "ID")
# Petittable <- tibble::rowid_to_column(Petittable, "ID")
StackTry <- ESGTable %>% 
  pivot_wider(id_cols = -ID, names_from = variable_name, values_from = mean_value) %>% 
  mutate(ID = row_number(), .before = compagny)
## --> worked
  1. 添加和索引列(1-->n 行)
  2. 删除多余的一列
  3. pivot_wider(id_cols --> 唯一标识每一行

非常感谢您这么快的帮助! Output