Изменить тип столбца фрейма данных в r? - PullRequest
1 голос
/ 09 мая 2020

Я изучаю r, и у меня проблема с преобразованием первого столбца моего фрейма данных в такой тип, как набор данных USArrests.

Если мы просматриваем головной набор данных USArrests:

           Murder Assault UrbanPop Rape
Alabama      13.2     236       58 21.2
Alaska       10.0     263       48 44.5
Arizona       8.1     294       80 31.0
Arkansas      8.8     190       50 19.5
California    9.0     276       91 40.6
Colorado      7.9     204       78 38.7 

Если честно, я не знаю тип первого столбца, например: Алабама , Аляска , .... Если бы мы использовали str(USArrests):

'data.frame':   50 obs. of  4 variables:
 $ Murder  : num  13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ...
 $ Assault : int  236 263 294 190 276 204 110 238 335 211 ...
 $ UrbanPop: int  58 48 80 50 91 78 77 72 80 60 ...
 $ Rape    : num  21.2 44.5 31 19.5 40.6 38.7 11.1 15.8 31.9 25.8 ...

Вот мой фрейм данных:

dat <- data.frame(
  time = factor(c("Breakfast","Lunch","Dinner"), levels=c("Breakfast","Lunch","Dinner")),
  total_bill = c(12.7557,14.8,17.23)
)

Просмотрите его:

1 Breakfast    12.7557
2     Lunch    14.8000
3    Dinner    17.2300

Моя цель - преобразовать его так же, как USArrest, может быть, это будет выглядеть так:

            total_bill
Breakfast    12.7557
Lunch        14.8000
Dinner       17.2300

Любая помощь будет принята с благодарностью

1 Ответ

1 голос
/ 09 мая 2020

Мы можем использовать column_to_rownames из tibble

library(tibble)
dat1 <- dat %>% 
          column_to_rownames('time')
dat1
#         total_bill
#Breakfast    12.7557
#Lunch        14.8000
#Dinner       17.2300

В base R мы также можем присвоить row.names, а затем присвоить столбцу NULL

row.names(dat) <- dat$time
dat$time <- NULL

, если мы проверим dimnames(USArrests) или используем row.names, будет ясно, что это имена строк

row.names(USArrests)
#[1] "Alabama"        "Alaska"         "Arizona"        "Arkansas"       "California"     "Colorado"      
#[7] "Connecticut"    "Delaware"       "Florida"        "Georgia"        "Hawaii"         "Idaho"         
#[13] "Illinois"       "Indiana"        "Iowa"           "Kansas"         "Kentucky"       "Louisiana"     
#[19] "Maine"          "Maryland"       "Massachusetts"  "Michigan"       "Minnesota"      "Mississippi"   
#[25] "Missouri"       "Montana"        "Nebraska"       "Nevada"         "New Hampshire"  "New Jersey"    
#[31] "New Mexico"     "New York"       "North Carolina" "North Dakota"   "Ohio"           "Oklahoma"      
#[37] "Oregon"         "Pennsylvania"   "Rhode Island"   "South Carolina" "South Dakota"   "Tennessee"     
#[43] "Texas"          "Utah"           "Vermont"        "Virginia"       "Washington"     "West Virginia" 
#[49] "Wisconsin"      "Wyoming"       
...