R 中变量的个案(如 SPSS)

Cases to variables in R (like SPSS)

我正在尝试根据特定列将我的行分布到多个列中。 结果应该是一个具有唯一 recordid 和一组列的数据框 基于另一列中的唯一值。

recordid location measA measB measC
     1     body  <NA>     5  <NA>
     2     body  <NA>   >10 text1
     2     head  <0.1  <0.1  <NA>
     3     body  0.02   0.5 text2
     3     head  <NA>  <NA> text3
     3     toes  <0.1  <0.1   >20

此处,位置变量是测量列的分组。结果应该是这样的:

recordid measA_body measA_head measA_toes measB_body measB_head measB_toes measC_body measC_head measC_toes
     1         <NA>     <NA>       <NA>          5       <NA>       <NA>       <NA>       <NA>       <NA>
     2         <NA>     <0.1       <NA>        >10       <0.1       <NA>      text1       <NA>       <NA>
     3         0.02     <NA>       <NA>        0.5       <NA>       <NA>      text2      text3       >20

在 SPSS 中,这是重组菜单中变量函数的情况,但我没有在 R 中找到某种类似的函数。我尝试了某种形式的 pivot_wider,但无法让它工作多列。在 R 中执行此操作的最佳方法是什么?

你可以这样做:

library(dplyr)
df %>%  pivot_wider(names_from = location, values_from = c(measA, measB, measC))
# A tibble: 3 x 10
  recordid measA_body measA_head measA_toes measB_body measB_head measB_toes
     <int> <chr>      <chr>      <chr>      <chr>      <chr>      <chr>     
1        1 <NA>       <NA>       <NA>       5          <NA>       <NA>      
2        2 <NA>       <0.1       <NA>       >10        <0.1       <NA>      
3        3 0.02       <NA>       <0.1       0.5        <NA>       <0.1      
# ... with 3 more variables: measC_body <chr>, measC_head <chr>,
#   measC_toes <chr>

有数据:

df <-
structure(list(recordid = c(1L, 2L, 2L, 3L, 3L, 3L), location = c("body", 
"body", "head", "body", "head", "toes"), measA = c("<NA>", "<NA>", 
"<0.1", "0.02", "<NA>", "<0.1"), measB = c("5", ">10", "<0.1", 
"0.5", "<NA>", "<0.1"), measC = c("<NA>", "text1", "<NA>", "text2", 
"text3", ">20")), class = "data.frame", row.names = c(NA, -6L
))