1. 将1赋值给x,并判断x是否在向量a=(1,2,1,0,3,-1,-2)中
x=1
a=c(1,2,1,0,3,-1,-2)
x%in%a
  1. 向量a<-c(1,3,-1,-2,-5),问

1)读取向量a中第一个和第四个元素;

2)读取向量a中大于等于-1的元素;

3)删除向量a中第一个和第三个元素的值,然后赋值给b;

4)将向量a中第一个和第五个值分别修改成9和8;

5) 将修改后的a向量中第一个和第五个元素分别除以3和2 (一行代码完成)

a=c(1,3,-1,-2,-5)
#2.1
a[c(1,4)]
#2.2
a[a>=-1]
#2.3
b = a[-c(1, 3)]
#2.4
a[c(1,5)]=c(9,8)
#2.5
a[c(1,5)]=a[c(1,5)]/c(3,2)
  1. 表1 5门课程的考试分数
姓名统计学数学营销学管理学会计学
张青松6885848986
王宇翔8591637666
田思雨7474618069
徐丽娜88100497166

将表格中数据存储到一个数据框Class1中,然后保存为一个Class1.RData文件,路径为D:/Dataset

names=c("张青松","王宇翔","田思雨","徐丽娜")
a = c(68,85,74,88)
b=c(85,91,74,100)
d=c(84,63,61,49)
e=c(89,76,80,71)
f=c(86,66,69,66)
class1=data.frame(姓名=names,统计学=a,数学=b,营销学=d,管理学=e,会计学=f)
save(class1,file="C:\\Users\\thinkbook\\Desktop\\class1.RData")
  1. 读取D:/Dataset中具有表头的txt文本文件 成绩.txt (TXT文件自己手工创建)
read.table(file="C:\\Users\\thinkbook\\Desktop\\class1.txt",header=TRUE,sep="\t")
  1. 把R数据对象Class1, 写到D:/Dataset/Class1.txt文件,列之间的分隔符为制表符
write.table(class1, file="C:/Users/thinkbook/Desktop/class1.txt",  row.names=FALSE, col.names=TRUE,sep="\t")
  1. 通过xlsx包或者readxl包读取Class2.xlsx文件,并把结果存储到R数据对象Class2中.
library(xlsx)
class2=read.xlsx(file="C:\\Users\\thinkbook\\Desktop\\class2.xlsx",sheetIndex=1)
  1. 加载数据库Dataset和数据框Class1, 然后移除数据框Class1
attach(class1)
detach(class1)
  1. 按照管理学成绩降序重新排列Class1数据框数据,若有空值,将空值放到末尾
class1[order(class1$管理学,na.last=TRUE,decreasing=FALSE),]
  1. set.seed(1234)

x <- seq(1,10)产生1到10之间的序列如下

[1] 1 2 3 4 5 6 7 8 9 10

1)请用无放回随机抽样,从x中随机抽取7个样本,并赋值给向量a

2)对抽取的随机样本分别用sort函数和order函数排序,并说明二者区别

set.seed(1234)
x=seq(1,10)
#9.1
a = sample(x,size = 7,replace = FALSE)
#9.2
sort(a)
order(a)
#sort函数是对序列进行排序然后展示的是序列的值而sort是对序列进行排序然后展示的是相应的索引
  1. y <- c(1, 3, NA, 7, 9),如何判断向量y是否有缺失值?如果有请用最可能得值替换空缺值。
y=c(1,3,NA,7,9)
is.na(y)
na.omit(y)
y[3]=5
  1. 请对数据1 2 3 5 7 8 10 14 15 18 20进行分箱操作,要求如下:

1)分成3个箱子,2)每个箱子右边为闭区间,3)不需要包含最小值,4)保留2位有效数字,5)并对三个箱子进行大小排序。

f=c(1,2,3,5,7,8,10,14,15,18,20)
cut(f,3,include.lowest = FALSE,right=TRUE,dig.lab = 2,ordered_result = TRUE)
  1. 对表1中的数据进行哑变量处理,高于等于85分的设定为1,低于85分的设为0,处理后结果放到数据框Class.new 中, 如下所示
姓名统计学数学营销学管理学会计学
张青松01011
王宇翔11000
田思雨00000
徐丽娜11000
scoreif = function(a1d) {
  ifelse(a1d >= 85, 1, 0)
}
names=c("张青松","王宇翔","田思雨","徐丽娜")
a = c(68,85,74,88)
b=c(85,91,74,100)
d=c(84,63,61,49)
e=c(89,76,80,71)
f=c(86,66,69,66)
class.new=data.frame(姓名=names,统计学=a,数学=b,营销学=d,管理学=e,会计学=f)
class.new$统计学=scoreif(class.new$统计学)
class.new$数学=scoreif(class.new$数学)
class.new$营销学=scoreif(class.new$营销学)
class.new$管理学=scoreif(class.new$管理学)
class.new$会计学=scoreif(class.new$会计学)
print(class.new)
class.new
library(caret)
dummyVars(scoreif, class.new, sep = ".", levelsOnly = FALSE,  fullRank = FALSE)
  1. 建立一个tibble数据框flights如下所示, 提取flight.no, 并分别以列向量和行向量形式显示。
# A tibble: 6 × 4
   year month   day flight.no
  <dbl> <dbl> <dbl>  <dbl>
1  2022    10    10 221010
2  2022    10    12 221012
3  2022    11    14 221114
4  2022    11    16 221116
5  2022    12    NA 221218
6  2022    12    20 221220
library(dplyr)
year=c(2022,2022,2022,2022,2022,2022)
month=c(10,10,11,11,12,12)
day=c(10,12,14,16,NA,20)
flight.no=c(221010,221012,221114,221116,221118,221220)
mydata=data.frame(year,month,day,flight.no)
mydata_tibble=tibble(mydata)
mydata_tibble
mydata_tibble[4]
mydata_tibble[[4]]
library(dplyr)
  1. 航班表格文件为flights,月份表头名称month
YearmonthdayDep_timeDep_delayArr_timeFlight.no
20221010 221010
20221012 221012
20221114 221114
20221116 221116
202212NA 221218
20221220 221220

注意:请用dplyr扩展包中filter函数筛选,

\#加载dplyr包中,如不存在就进行在线安装,代码如下

if(!require(dplyr)) install.packages("dplyr")

1)筛选11月和12月份的航班信息,

2)筛选10月10日的航班

3)筛选11月15日及以后的航班(保留NA行)

4)按照年月日对航班数据进行降序排列

5)增加一个新属性hour, 由flight.no的后四位组成

#14.1
filter(mydata,month==11|month==12)
#14.2
filter(mydata,month==10&day==10)
#14.3
filter(mydata,month>10&day>14|is.na(day))
#14.4
arrange(mydata, desc(year), desc(month), desc(day))
#14.5
mutate(mydata,hour = substr(flight.no, nchar(flight.no) - 3, nchar(flight.no)))
  1. set.seed(1234)

df <- data.frame(x1 = sample(1:3,8,replace = T), x2 = sample(letters[1:3],8,replace = T))

1)请对随机产生的数据df中8个样本进行去重操作,并赋给a,

2)将变量X2中b转换成B,其他改成0,并将变化后的值赋给新变量X3,然后存入S中

set.seed(1234)
df <- data.frame(x1 = sample(1:3,8,replace = T), x2 = sample(letters[1:3],8,replace = T))
#15.1
a=unique(df)
#15.2
df$x3=ifelse(df$x2=="b","B",0)
s=df
  1. 查看鸢尾花数据集iris前10行,第1列Sepal.Length、第3列Petal.Length、第4列Petal.Width和第5列Species的数据子集,并提取变量Sepal.Length值大于4.5且变量因子水平Species为setosa的数据子集
iris_subset <- iris[1:10, c(1, 3, 4, 5)]
iris[iris$Sepal.Length > 4.5 & iris$Species == "setosa", ]
  1. 创建一个2行3列的矩阵r1和一个2行2列矩阵r2,然后用rbind()函数或者cbind()函数对两个矩阵进行合并。
r1 <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2)
r2 <- matrix(c(1, 2, 3, 4), nrow = 2)
r3=cbind(r1,r2)
  1. 创建两个数据框,数据框student包含变量name. gender,数据框english_ score包含变量name、score。

表student:

name gender

1 Emily female

2 Jacob male

3 Emma female

4 Michael male

5 0livia female

6 Isabella female

7 Daniel male

表English_score

sub_name score

1 Michael 58

2 Jacob 54

3 Olivia 87

4 Daniel 65

5 Emma. 53

6 Tracy 83

如何通过merge()函数实现两表全连接的拼接 。

name=c("Emily","Jacob","Emma","Michael","Olivia","Isabella","Daniel")
gender=c("female","male","female","male","female","female","male")
student=data.frame(name=name,gender=gender)
sub_name=c("Michael","Jacob","Olivia","Daniel","Emma","Tracy")
score=c(58,54,87,65,53,83)
English_score=data.frame(sub_name=sub_name,score=score)
new_student=merge(student,English_score,by.x = "name",by.y = "sub_name",all=T)