很久很久没有记录了,OneNote也老是闪退,找个地方记录一下。
- glimpse()和summary()功能相似
- Ctrl+Shift+M,管道操作,|>,或者%>%,读作then(然后)
- 操作行
-- filter,不改变行的顺序,保留哪些列
df=flights |> filter(dest=="IAH") |> groupby(year,month,day) |> summarize( arrdelay=mean(arr_delay,na.rm = TRUE) )
-- 可以使用&或|表示“与”、“或”,当需要组合使用&和|,可以使用%in%这个便捷写法
-- arrange,根据列的值来改变行的顺序,desc()降序
flights |>
arrange(desc(dep_delay))
-- distinct()找到唯一的一行,采用.keep_all=TRUE,筛选结果保留其他列
flights |>
distinct(origin,dest,.keep_all = TRUE)
-- count计算出现的次数,参数sort=TRUE,按降序排列
flights |>
count(origin,dest,sort=TRUE)
- 操作列
-- mutate根据现有的列做计算创建新的列,mutate默认将新列添加到最后,可以使用.before参数设置新列的位置
flights |>
mutate(
gain=depdelay - arrdelay,
speed= distance / air_time *60,
.before = 1
)
用.after设置新列的位置
flights |>
mutate(
gain= dep_delay -arr_delay,
speed= distance /air_time *60,
.after = day
)
用.keep来控制保留哪些参数,.keep="used"保留涉及的列
flights |>
mutate(
gain= depdelay -arrdelay,
speed= distance /air_time *60,
.keep = "used"
)
-- select选择要保留的列,类似filter在行选择上的作用
select(a:c),选择a到c(包含c)之间的所有列
select(!a:c),选择a到c以外的所有列
!读作“非”
select(where(is.character)),选择所有字符型的列
可以使用正则表达式,或者辅助函数startswith("abc"),endswith("xyz"),contains("ijk"),num_range("x",1:3)匹配x1,x2,x3
-- rename改变列名
-- relocate更改列的位置,可以用.before,.after参数来指定位置
5.分组
-- groupby,summarize,其中n()返回每个分组的行数
by(month) |>
summarize(
avgdelay=mean(depdelay,na.rm=TRUE),
n=n()
)
-- slice*函数,slicehead(n=1),tail,min,max,sample,分别表示提取第一行、最后一行、最小值最大值所在的行,随机一行等,根据需要可以调整n的取值,或者用prop=0.1代替n
flights |>
group
flights |>
group_by(dest) |>
slice_max(arr_delay,n=1) |>
relocate(dest)
-- .by 类似groupby,dplyr1.1.0版本引入的新的实验性语法
delay,na.rm=TRUE),
n=n(),
.by=c(origin,dest)
)
flights |>
summarize(
delay=mean(dep