No.8 基本数据操作
1.创建新变量
1.1在excel表格中创建数据
控制台输入命名安装“readxl”包
install.packages("readxl")
读取数据:
1 2 3 | library (readxl) data <- read_excel ( "D:/R_proj/test1029/test_data/NO8text.xlsx" ) data |
1.2数据清洗
1)去除空值---na.omit()
1 2 3 4 5 6 7 8 9 10 | 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()
1 | names (data1)运行结果:> names (data1)[1] "num" "fruit" "income24" "income25" |
3)添加新列,并计算income24和income25的和赋值给新列----$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #添加新列,计算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运行结果: # 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可以用$(返回向量)和[] (返回数据框)创建变量,但是注意两个返回的数据类型是不一样的。 |
#添加新列,方法2
data1["sum2"] <- data1["income24"] + data1["income25"]
data1
1 2 3 4 5 6 7 8 9 10 11 | #添加新列,按收入高中低分级 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.变量重命名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #修改列名 #查看第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 2 3 4 5 6 7 8 | #同时修改多列的列名 #修改第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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #提取子集 #保留第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 3 4 5 6 7 8 9 10 11 12 13 | #剔除数据 #剔除第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 |
提取行数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #提取行数据 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 |
1 2 3 4 5 6 7 8 | #推荐使用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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了