tidyverse select() 选择列 搭配mutate()增加列

$dataframe %>%select($var1,$var2,$var3)  #列名,但建议用这种。

$dataframe %>%select($index1,$index2,$index3) #列的位置

上述等效,但建议用列名选择。

  • 如flights%>%select(year,month,day) #第1、2、3列  与flights%>%select(1,2,3)一致。
  • select内这是多个条件时也表示取并集,“或”关系。

    

              

  • flights %>%select(year:day) 选择两个列变量之间的所有列,冒号
  •  

    flights %>% select(-(year:day)) 选择不在列变量区间的所有列。

  •  

     flights %>% select(starts_with("arr")) 匹配以“arr”开头的列。 

  •  

    flights %>%select(ends_with("delay")) 匹配以“delay”结尾的列 

  •  

    flights %>%select(contains("time")) 匹配变量名包含“time”字段的列 

  •  

    flights %>%select(matches("time.*")) 列变量名匹配matches正则表达式 

  •  

     df %>% select(num_range("x",1:3)) 选择列名为 x1,x2,x3

  •  flights %>% select(one_of("arr_delay","dep_delay","xyz"))  选择列名属于这个序列中的列

    •   等效: 先定义如vars<-c("arr_delay","dep_delay","xyz") 然后 flights %>% select(one_of(vars))

  • everything() 匹配所有剩余变量,用于将某些变量移动数据集开头的场景下
  •  

     flights %>% select(time_hour,air_time,everything())    #把time_hour,air_time两个变量列移动数据集开头,其他列跟在后面。

  •  

    last_col(offset=n),取倒数第几列。不设置offset或设置为0时是最后一列。如flights %>% select(last_col(offset = 1))  #取倒数第二列

  •  

    select 内可以设置多个条件,用逗号分隔,“或” 的关系。如flights %>% select(starts_with("arr"),ends_with("time")) #取以arr开头或time结尾的列名

  • 注意:
    • starts_with,ends_with,contains,matches 这四个函数有ignore_case参数,默认是TRUE,是忽略大小写的,需要识别得话设为FASLE.
    •  

        select多次选择同一变量名时只选择一次。如 flights %>% select(year, month, day, year, day)  

  • select()搭配mutate()选择列,然后增加新列。mutate新列变量一经创建,就可以立即使用。如:
    •    flights %>% select(ends_with("delay"),air_time) %>% mutate(gain=arr_delay-dep_delay,hours=air_time/60,gain_per_hour=gain/hours)
    •   
  •  

     如果只保留新变量,则用transmute() 如:flights %>% select(ends_with("delay"),air_time) %>%transmute(gain=arr_delay-dep_delay,hours=air_time/60,gain_per_hour=gain/hours)

    •   

       

       

  • 用rname()重命名列名(变量名)  如rename(flights,tail_num=tailnum) # 将数据框flights中的原tail_num列变量重命名为tailnum,其他列不改动。

 

mutate 新增列,判断其他列内容填充到新列,

如 phenotype_sex<- phenotype%>% mutate(sex=if_else(!is.na(sex.2.女.),sex.2.女.,ifelse(性别=="女","2","1"))) 

# 即: 1)如果sex.2.女. 不是NA, 那么填充此列对应内容

    2)如果sex.2.女. 是NA,那么从“性别”列取值

      如果 “性别”列内容是“女”,则赋值为2,否则赋值为1

 

 

 

 

posted on   BioinformaticsMaster  阅读(955)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2017-12-14 python zip()函数转置表,操作列

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示