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

  

  

posted @   百里屠苏top  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示