更改 r 中数据框列的类型?
Change the type of a dataframe's column in r?
我正在学习 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
老实说,我不知道第一列的类型,例如:Alabama、Alaska、...
如果我们使用 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
如有任何帮助,我们将不胜感激
我们可以使用 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"
我正在学习 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
老实说,我不知道第一列的类型,例如:Alabama、Alaska、...
如果我们使用 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
如有任何帮助,我们将不胜感激
我们可以使用 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"