R中变量的大小写例如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中找不到某种模拟函数。我尝试了某种形式的ivot_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,3L,3L),location = c("body","body","head","toes"),measA = c("<NA>","<NA>","<0.1","0.02","<0.1"),measB = c("5",">10","0.5",measC = c("<NA>","text1","text2","text3",">20")),class = "data.frame",row.names = c(NA,-6L
))