R数据科学第二版学习1

很久很久没有记录了,OneNote也老是闪退,找个地方记录一下。

  1. glimpse()和summary()功能相似
  2. Ctrl+Shift+M,管道操作,|>,或者%>%,读作then(然后)
  3. 操作行 -- 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)

  1. 操作列

-- 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()返回每个分组的行数


flights |> 
  groupby(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_by(dest) |> 
  slice_max(arr_delay,n=1) |> 
  relocate(dest)

-- .by 类似groupby,dplyr1.1.0版本引入的新的实验性语法


flights |> 
  summarize(
    delay=mean(depdelay,na.rm=TRUE),
    n=n(),
    .by=c(origin,dest)
  )

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注