如何从 R 中的唯一行创建变量

How to create variables from unique rows in R

这是我的数据集的样子:

| hhid     | food_code    | consumed     |.....|
|----------|--------------|--------------|.....|
| 479      | 01.1.1.1.0.3 | 0.66666667   |.....|
| 479      | 01.1.1.2.1.3 | 0.00000000   |.....|
| 480      | 01.1.1.1.0.3 | 0.33333333   |.....|
| 480      | 01.1.1.2.1.3 | 0.26548932   |.....|
...
...

所以,我有很多 hhid 和 74 个独特的 food_code。对于每个 hhid,我想制作一个数据框如下:

| hhid     | 01.1.1.1.0.3 | 01.1.1.2.1.3 |.....|
|----------|--------------|--------------|.....|
| 479      | 0.66666667   | 0.00000000   |.....|
| 480      | 0.33333333   | 0.26548932   |.....|

我尝试用 t() 函数进行转置,但它把一切都搞砸了。

我也试过filter

raw2<-raw%>%
  select(hhid, food_code_str, fd_cspn_ph)%>%
  filter(hhid==479)

您可以使用 tidyr 中的 pivot_wider(在 tidyverse 中)。

library(tidyverse)

df %>% 
  pivot_wider(names_from = "food_code", values_from = "consumed")

输出

   hhid `01.1.1.1.0.3` `01.1.1.2.1.3`
  <int>          <dbl>          <dbl>
1   479          0.667          0    
2   480          0.333          0.265

数据

df <- structure(list(hhid = c(479L, 479L, 480L, 480L, 481L), food_code = c("01.1.1.1.0.3", 
"01.1.1.2.1.3", "01.1.1.1.0.3", "01.1.1.2.1.3", "01.1.1.2.1.4"
), consumed = c(0.66666667, 0, 0.33333333, 0.26548932, 0.26548932
)), class = "data.frame", row.names = c(NA, -5L))