再练习一下R语言数据类型的一些基础操作
我又遇到一本奇书(虽然大部分书都很奇),第一章就是各种画图函数的图例,章节叫绘图基础,但是形参和数据来源和解释都未知。虽然不可能解释地多详细,但是如果只是过一遍的话,为什么要占80面,差点就弃了。
\;\\\;\\\;
df <- data.frame(
#前面的不是形参,而是列名
y=c('A','B','C'),
'2010'=c(1,3,4),
'2011'=c(3,5,2),
'2021'=c(0,0,0),
#F保证特殊符号被正常读取,T的话会在前面加个X
check.names = T
)
df
> df
y X2010 X2011 X2021
1 A 1 3 0
2 B 3 5 0
3 C 4 2 0
\;\\\;\\\;
df1 <- data.frame(
x=c('a','b','c'),
y=1:3
)
df2 <- data.frame(
x=c('e','w','z'),
z=c(4,5,1)
)
df3 <- data.frame(
w=c('a','b','z'),
f=4:6
)
df4 <- data.frame(
x=c('a','b','d'),
y=c(1,4,3),
z=c(2,5,4)
)
all = T
T是TRUE的缩写,F是FALSE的缩写
all=F删除有缺失NA的行
by = ‘x’
主键是x,表中缺失为NA
#把df1和df2按列拼起来
merge(
df1,
df2,
by='x', #主键是x,表中缺失为NA
all=T
)
x y z
1 a 1 NA
2 b 2 NA
3 c 3 NA
4 e NA 4
5 w NA 5
6 z NA 1
by.x = ‘x’
by.y = ‘w’
以x和w为主键进行融合,其他列拼接在后面就行(一个主键)
#把df1和df3按列拼起来
merge(
df1,
df3,
by.x='x',
by.y='w',
all=T
)
x y f
1 a 1 4
2 b 2 5
3 c 3 NA
4 z NA 6
by = c(‘x’,‘y’)
以x和y为主键进行融合,其他列拼接在后面就行(两个主键)
#把df1和df4按列拼起来
merge(
df1,
df4,
by=c('x','y'),
all=T
)
x y z
1 a 1 2
2 b 2 NA
3 b 4 5
4 c 3 NA
5 d 3 4
\;\\\;\\\;
df1 <- data.frame(
x=c('a','b','c'),
y = 1:3
)
df2 <- data.frame(
zz=c('F','W','A'),
g = c(2,5,4)
)
df3 <- data.frame(
x=c('we','i'),
y = c(2,5)
)
df1
df2
df3
#将行数相同的按列拼接在一起
table <- cbind(df1,df2) #行数必须一致
table
#将列名相同的按行拼接在一起
table <- rbind(df1,df3) #必须列名相同
table
> df1
x y
1 a 1
2 b 2
3 c 3
> df2
zz g
1 F 2
2 W 5
3 A 4
> df3
x y
1 we 2
2 i 5
> table
x y zz g
1 a 1 F 2
2 b 2 W 5
3 c 3 A 4
> table
x y
1 a 1
2 b 2
3 c 3
4 we 2
5 i 5
\;\\\;\\\;
没有all参数(默认all=F)就是inner join
all=T就是full join
all.x=T就是left join
all.y=T就是right join
\;\\\;\\\;
dplyr::inner_join(
x=df1,
y=df2,
by='x'
)
dplyr::full_join(
x=df1,
y=df2,
by='x'
)
dplyr::left_join(
x=df1,
y=df2,
by='x'
)
dplyr::right_join(
x=df1,
y=df2,
by='x'
)
\;\\\;\\\;
df <- data.frame(
n=c('A','B','C','A','C'),
'2021'=c(1,3,4,4,3),
'2022'=c(3,5,6,2,3),
#F:特殊字符正常显示为列名
check.names = F
)
df
#数据重组
df_melt <- reshape2::melt(
df,
#变成n year uid三列
id.vars = 'n',
variable = 'year',
value.name = 'uid'
)
df_melt
#分组
g <- aggregate(uid~year + n,df_melt,mean)
g
> df
n 2021 2022
1 A 1 3
2 B 3 5
3 C 4 6
4 A 4 2
5 C 3 3
> df_melt
n year uid
1 A 2021 1
2 B 2021 3
3 C 2021 4
4 A 2021 4
5 C 2021 3
6 A 2022 3
7 B 2022 5
8 C 2022 6
9 A 2022 2
10 C 2022 3
> g
year n uid
1 2021 A 2.5
2 2022 A 2.5
3 2021 B 3.0
4 2022 B 5.0
5 2021 C 3.5
6 2022 C 4.5