No.8 基本数据操作
1.创建新变量
1.1在excel表格中创建数据

控制台输入命名安装“readxl”包
install.packages("readxl")
读取数据:
library(readxl)
data <- read_excel("D:/R_proj/test1029/test_data/NO8text.xlsx")
data
1.2数据清洗
1)去除空值---na.omit()
data1 <- na.omit(data) data1
运行结果:
> data1
# A tibble: 6 × 4
num fruit income24 income25
<dbl> <chr> <dbl> <dbl>
1 1 苹果 67 56
2 3 香蕉 45 89
3 4 圣女果 57 72
4 5 百香果 26 89
5 6 火龙果 34 87
6 7 梨 43 64
#不会删除excel 中的原始数据
2)查看数据的列名---names()
names(data1)
运行结果:
> names(data1)
[1] "num" "fruit" "income24" "income25"
3)添加新列,并计算income24和income25的和赋值给新列----$
#添加新列,计算24年和25年的收入之和 data1$sum1 <- data1$income24 + data1$income25 data1
运行结果:
# A tibble: 6 × 5
num fruit income24 income25 sum1
<dbl> <chr> <dbl> <dbl> <dbl>
1 1 苹果 67 56 123
2 3 香蕉 45 89 134
3 4 圣女果 57 72 129
4 5 百香果 26 89 115
5 6 火龙果 34 87 121
6 7 梨 43 64 107
#添加新列,方法2
data1["sum2"] <- data1["income24"] + data1["income25"]
data1
运行结果:
# A tibble: 6 × 6
num fruit income24 income25 sum1 sum2
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 苹果 67 56 123 123
2 3 香蕉 45 89 134 134
3 4 圣女果 57 72 129 129
4 5 百香果 26 89 115 115
5 6 火龙果 34 87 121 121
6 7 梨 43 64 107 107
可以用$(返回向量)和[] (返回数据框)创建变量,但是注意两个返回的数据类型是不一样的。
#添加新列,按收入高中低分级 data1$class24 <- ifelse(data1$income24 < 30,"low",ifelse(data1$income24 > 50,"high","middle")) data1
结果:
# A tibble: 6 × 7
num fruit income24 income25 sum1 sum2 class24
<dbl> <chr> <dbl> <dbl> <dbl> <dbl> <chr>
1 1 苹果 67 56 123 123 high
2 3 香蕉 45 89 134 134 middle
3 4 圣女果 57 72 129 129 high
4 5 百香果 26 89 115 115 low
5 6 火龙果 34 87 121 121 middle
6 7 梨 43 64 107 107 middle
2.变量重命名
#修改列名 #查看第5列的列名 names(data1)[5] #给第5列的列名重新赋值 names(data1)[5] <- "求和1" names(data1)
运行结果:
> names(data1)
[1] "num" "fruit" "income24" "income25" "sum1" "sum2" "class24"
> #修改列名
> #查看第5列的列名
> names(data1)[5]
[1] "sum1"
> #给第5列的列名重新赋值
> names(data1)[5] <- "求和1"
> names(data1)
[1] "num" "fruit" "income24" "income25" "求和1" "sum2" "class24"
#同时修改多列的列名
#修改第1列,第3列,第5列的列名
names(data1)[c(1,3,5)] <- c("C1","C3","C5")
names(data1)
运行结果:
> #同时修改多列的列名
> #修改第1列,第3列,第5列的列名
> names(data1)[c(1,3,5)] <- c("C1","C3","C5")
> names(data1)
[1] "C1" "fruit" "C3" "income25" "C5" "sum2" "class24"
3.提取子集
#提取子集
#保留第1,3,5列的数据
baoliu <- c("C1","C3","C5")
baoliudata <- data1[baoliu]
baoliudata
baoliudata1 <- data1[,c(1,3,5)] #逗号前面表示保留所有的行
baoliudata1
运行结果:
> #保留第1,3,5列的数据
> baoliu <- c("C1","C3","C5")
> baoliudata <- data1[baoliu]
> baoliudata
C1 C3 C5
1 1 67 123
2 3 45 134
3 4 57 129
4 5 26 115
5 6 34 121
6 7 43 107
> baoliudata1 <- data1[,c(1,3,5)] #逗号前面表示保留所有的行
> baoliudata1
C1 C3 C5
1 1 67 123
2 3 45 134
3 4 57 129
4 5 26 115
5 6 34 121
6 7 43 107
#剔除数据 #剔除第1,第2列的数据 newdata <- data1[,-c(1,2)] newdata
运行结果:
> #剔除第1,第2列的数据
> newdata <- data1[,-c(1,2)]
> newdata
C3 income25 C5 sum2 class24
1 67 56 123 123 high
2 45 89 134 134 middle
3 57 72 129 129 high
4 26 89 115 115 low
5 34 87 121 121 middle
6 43 64 107 107 middle
提取行数据
#提取行数据 newdata_1 <- data1[c(1,3,5),] #逗号后面表示所有的列 newdata_1 newdata_2 <- data1[data1$class24=="high",] newdata_2
运行结果:
> #提取行数据
> newdata_1 <- data1[c(1,3,5),] #逗号后面表示所有的列
> newdata_1
C1 fruit C3 income25 C5 sum2 class24
1 1 苹果 67 56 123 123 high
3 4 圣女果 57 72 129 129 high
5 6 火龙果 34 87 121 121 middle
> newdata_2 <- data1[data1$class24=="high",]
> newdata_2
C1 fruit C3 income25 C5 sum2 class24
1 1 苹果 67 56 123 123 high
3 4 圣女果 57 72 129 129 high
#推荐使用subset,更简单 newdata_3 <- subset(data1,class24=="high",) newdata_3
运行结果:
> #推荐使用subset,更简单
> newdata_3 <- subset(data1,class24=="high",)
> newdata_3
C1 fruit C3 income25 C5 sum2 class24
1 1 苹果 67 56 123 123 high
3 4 圣女果 57 72 129 129 high

浙公网安备 33010602011771号