>source

레이블이 지정된 열 (즉, 레이블이있는 변수)이있는 데이터 세트로 작업하고 있습니다. 데이터 세트는 다음과 같은 와이드 형식입니다.

df <- data.frame("Trust" = c(1, 2, 3, 2, 3),          
         "Evaluation" = c(2, 3, 1, 1, 3))

신뢰와 평가는 설문 조사 질문입니다. 각 행은 개인에 해당하며 1 (신뢰 없음/불량 평가)에서 3 (절대 신뢰/양호 평가)까지의 척도로 답변을 제공합니다. 신뢰 및 평가 변수는 레이블이 지정됩니다 (즉, RStudio 뷰어의 헤더는 설명 "X를 얼마나 신뢰합니까", "Y를 어떻게 평가합니까"). 예제에 라벨을 추가 할 수없고 원본 데이터 세트를 공유 할 수 없지만 의미는 분명하다고 생각합니다.

내가 원하는 것은 이것을 긴 형식으로 변환하는 것입니다. df<-data.frame ( "Question"= c ( "Trust", "Trust", "Trust", "Trust", "Trust", "Evaluation", "Evaluation", "Evaluation", "Evaluation"),
"값"= c (1, 2, 3, 2, 3, 2, 3, 1, 1, 3)), "Label"= c ( "LabelTrust", "LabelTrust", "LabelTrust", "LabelTrust", "LabelTrust", "LabelEvaluation", "LabelEvaluation", "LabelEvaluation", "LabelEvaluation")

이상적으로는 변수 이름에 대한 열, 레이블에 대한 열,이 변수가 사용하는 값에 대한 열을 만들고 싶습니다. 코드가 완전히 재현되지 않는다고 생각해서 죄송 합니다만, 제가 의미하는 바는 분명하다고 생각합니다.

이것을 만드는 방법이 있습니까? 나는 tidyr에서 pivot_longer로 이것을하려고하지만 열의 레이블이 지정된 특성 때문에 문제가 발생합니다. 먼저 변수를 요인으로 변환하면 만들 수 있다고 생각하지만 레이블 이름을 잃어 버리고 이것은 내가 원하는 것이 아닙니다.

해결책이 tidyverse에서 나올 수 있다면 그것은 굉장 할 것입니다. 모두에게 감사합니다!

r

  • 답변 # 1

    내가 올바르게 이해하면 데이터 프레임은 labelled 패키지, 같은

    df <- data.frame("Trust" = c(1, 2, 3, 2, 3), "Evaluation" = c(2, 3, 1, 1, 3))
    var_label(df$Trust) <- "how much do you trust X"
    var_label(df$Evaluation) <- "how do you evaluate Y"
    
    

    패키지 문서에 따르면 look_for 함수는 다음과 같은 출력을 제공합니다.

    # pos   variable   label                   col_type values      
    # <chr> <chr>      <chr>                   <chr>    <chr>       
    # 1     Trust      how much do you trust X dbl      range: 1 - 3
    # 2     Evaluation how do you evaluate Y   dbl      range: 1 - 3
    
    

    이를 기반으로 원하는 출력을 다음과 같이 얻을 수 있습니다.

    df %>% pivot_longer(cols=everything(), names_to="Question", values_to="Value") %>%
      left_join(df %>% look_for() %>% select(Question=variable, Label=label), by="Question")
    
    

    도움이 되었기를 바랍니다.

    최신 정보

    값의 레이블을 포함하려면 다음 코드가 작동합니다 (약간 복잡하지만)

    left_join(
      df %>% pivot_longer(cols=everything(), names_to="Question", values_to="Value") %>% nest(df=-Question),
      df %>% look_for() %>% lookfor_to_long_format() %>% select(Question=variable, Label=label, ValueLabel=value_labels) %>%
        mutate(ValueLabel=str_split(ValueLabel, "] "),
               Value=map_int(ValueLabel, ~ .[[1]] %>% str_replace("\\[", "") %>% as.integer()),
               ValueLabel=map_chr(ValueLabel, ~ .[[2]])) %>% nest(label=-Question),
      by="Question"
    ) %>% mutate(df=map2(df, label, ~ left_join(.x, .y, by="Value"))) %>% select(-label) %>% unnest(cols=df)
    
    

    (산출)

    ## A tibble: 10 x 4
    #   Question   Value Label                   ValueLabel
    #   <chr>      <dbl> <chr>                   <chr>
    # 1 Trust          1 how much do you trust X No trust
    # 2 Trust          2 how much do you trust X Somewhat trust
    # 3 Trust          3 how much do you trust X Absolute trust
    # 4 Trust          2 how much do you trust X Somewhat trust
    # 5 Trust          3 how much do you trust X Absolute trust
    # 6 Evaluation     2 how do you evaluate Y   Neither good nor bad
    # 7 Evaluation     3 how do you evaluate Y   Good
    # 8 Evaluation     1 how do you evaluate Y   Bad
    # 9 Evaluation     1 how do you evaluate Y   Bad
    #10 Evaluation     3 how do you evaluate Y   Good
    
    

  • 답변 # 2

    귀하의 질문은 넓은 형식에서 긴 형식으로 data.frame 재구성과 관련이있을 수 있습니다.

    다음은 어떻습니까

    df <- data.frame("Trust" = c(1, 2, 3, 2, 3),          
                     "Evaluation" = c(2, 3, 1, 1, 3))
    df.long <- reshape(df,
                       direction = "long",
                       varying = list(names(df)),
                       v.names = "Value",
                       idvar = c("Trust", "Evaluation"),
                       timevar = "Question")
    df.long$Question <- ifelse(df.long$Question == 1, "Trust", "Evaluation")
    df.long$Label    <- ifelse(df.long$Question == 1, "LabelTrust", "LabelEvaluation")
    df.long
    
    

    당신에게 준다

           Question Value           Label
    1.2.1      Trust     1      LabelTrust
    2.3.1      Trust     2      LabelTrust
    3.1.1      Trust     3      LabelTrust
    2.1.1      Trust     2      LabelTrust
    3.3.1      Trust     3      LabelTrust
    1.2.2 Evaluation     2 LabelEvaluation
    2.3.2 Evaluation     3 LabelEvaluation
    3.1.2 Evaluation     1 LabelEvaluation
    2.1.2 Evaluation     1 LabelEvaluation
    3.3.2 Evaluation     3 LabelEvaluation
    
    

    HTH

관련 자료

  • 이전 java - EclEmma 및 Eclipse를 사용하여 "범위 데이터가 수집되지 않았습니다"메시지 받기
  • 다음 Windows 10에서 터미널 크기를 얻는 방법 (PHP 사용)