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

  

  

posted @ 2025-01-21 09:11  百里屠苏top  阅读(22)  评论(0)    收藏  举报