bugfix> r > 投稿

私は次のデータを持っていると仮定します

specialty <- c("Primary Care", "Internal Medicine Subspecialties" , 
 "Pediatric subspecialties","Surgical subspecialties", "Emergency 
  Medicine","All other specialties", "No Medical specialty")

 test <- c(23,43,67,77,54)
dfTEST <- data.frame(test)
dfTEST<- t(dfTEST)
colnames(dfTEST) <- c(1,2,4,5,7)
> dfTEST
      1  2  4  5  7
 test 23 43 67 77 54

dfTestには、数値をスキップする5つの変数があることに注意してください。これらの列番号(1、2、4、5、7)を専門にマップするデータフレームを作成する必要があります。専門は、dfTest colnamesに調整される7つの文字列です。意味dfTest 2 = "Internal Medicine Subspecialties"およびdfTest 4 = "surgical subspecialtiesなど。以下は、私が達成しようとしていることのスニペットですが、その方法については困惑しています。 colnamesの数字が何であっても、コードは引き続き機能します。

> dfTEST
          1                2           4  5  7
 test     23              43           67 77 54
added "primary care"   "internal" ...

回答 2 件
  • お役に立てれば:

    # get the indexes of correspondent specialties
    ids <- as.integer(colnames(dfTEST))
    dfTEST<- as.data.frame(t(dfTEST))
    dfTEST$added <- specialty[ids]
    dfTEST<- t(dfTEST)
    
    

    出力:

    > dfTEST
          1              2                                  4                        
    test  "23"           "43"                               "67"                     
    added "Primary Care" "Internal Medicine Subspecialties" "Surgical subspecialties"
          5                                     7                     
    test  "77"                                  "54"                  
    added "Emergency \n               Medicine" "No Medical specialty"
    
    

  • これで問題が解決するはずです。

    library(dplyr)
    specialty_lookup <- data.frame(specialty = c("Primary Care",
                             "Internal Medicine Subspecialties", 
                             "Pediatric subspecialties",
                             "Surgical subspecialties",
                             "Emergency Medicine",
                             "All other specialties",
                             "No Medical specialty"),
               test = 1:7, 
               stringsAsFactors = F)
    data  <-  data.frame(code = c(23,43,67,77,54),
                      test = c(1,2,4,5,7))
    data <- data %>% 
      left_join(specialty_lookup)
    data_wide <- data %>% 
      select(-test) %>%
      t() %>% 
      data.frame()
    colnames(data_wide) <- data$test
    data_wide
    
    

    ただし、これが本当にデータに必要な形式であるかどうかを自問する必要があります。あなたの問題を少しだけ見ることができたので、次の形式がより適切です。

    library(dplyr)
    specialty_lookup <- data.frame(specialty = c("Primary Care",
                             "Internal Medicine Subspecialties", 
                             "Pediatric subspecialties",
                             "Surgical subspecialties",
                             "Emergency Medicine",
                             "All other specialties",
                             "No Medical specialty"),
               test = 1:7, stringsAsFactors = F)
    data  <-  data.frame(code = c(23,43,67,77,54),
                      test = c(1,2,4,5,7))
    data <- data %>% 
      left_join(specialty_lookup)
    data
    
    

あなたの答え