- 将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
- 向量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 5门课程的考试分数
姓名 | 统计学 | 数学 | 营销学 | 管理学 | 会计学 |
---|---|---|---|---|---|
张青松 | 68 | 85 | 84 | 89 | 86 |
王宇翔 | 85 | 91 | 63 | 76 | 66 |
田思雨 | 74 | 74 | 61 | 80 | 69 |
徐丽娜 | 88 | 100 | 49 | 71 | 66 |
将表格中数据存储到一个数据框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")
- 读取D:/Dataset中具有表头的txt文本文件 成绩.txt (TXT文件自己手工创建)
read.table(file="C:\\Users\\thinkbook\\Desktop\\class1.txt",header=TRUE,sep="\t")
- 把R数据对象Class1, 写到D:/Dataset/Class1.txt文件,列之间的分隔符为制表符
write.table(class1, file="C:/Users/thinkbook/Desktop/class1.txt", row.names=FALSE, col.names=TRUE,sep="\t")
- 通过xlsx包或者readxl包读取Class2.xlsx文件,并把结果存储到R数据对象Class2中.
library(xlsx)
class2=read.xlsx(file="C:\\Users\\thinkbook\\Desktop\\class2.xlsx",sheetIndex=1)
- 加载数据库Dataset和数据框Class1, 然后移除数据框Class1
attach(class1)
detach(class1)
- 按照管理学成绩降序重新排列Class1数据框数据,若有空值,将空值放到末尾
class1[order(class1$管理学,na.last=TRUE,decreasing=FALSE),]
- 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是对序列进行排序然后展示的是相应的索引
- 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 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中的数据进行哑变量处理,高于等于85分的设定为1,低于85分的设为0,处理后结果放到数据框Class.new 中, 如下所示
姓名 | 统计学 | 数学 | 营销学 | 管理学 | 会计学 |
---|---|---|---|---|---|
张青松 | 0 | 1 | 0 | 1 | 1 |
王宇翔 | 1 | 1 | 0 | 0 | 0 |
田思雨 | 0 | 0 | 0 | 0 | 0 |
徐丽娜 | 1 | 1 | 0 | 0 | 0 |
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)
- 建立一个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)
- 航班表格文件为flights,月份表头名称month
Year | month | day | Dep_time | Dep_delay | Arr_time | Flight.no |
---|---|---|---|---|---|---|
2022 | 10 | 10 | 221010 | |||
2022 | 10 | 12 | 221012 | |||
2022 | 11 | 14 | 221114 | |||
2022 | 11 | 16 | 221116 | |||
2022 | 12 | NA | 221218 | |||
2022 | 12 | 20 | 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)))
- 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
- 查看鸢尾花数据集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", ]
- 创建一个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)
- 创建两个数据框,数据框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)