R语言入门:基于其他列条件新增并填充列的简单方法
简单上手:给50万行CSV新增条件列(R语言新手友好版)
Hey Anna, totally get where you're coming from—when you're just starting out with R, all the fancy syntax can feel overwhelming, especially with a big dataset like 500k rows. Let's break this down into super simple, step-by-step stuff that you can follow right now.
第一步:加载你的数据集
首先我们要把CSV文件读进R里。对于大文件,推荐用readr包的read_csv()函数(比基础的read.csv()更快);如果不想装新包,基础函数也能轻松搞定。
方法1:用基础R(无需额外安装包)
# 把CSV文件读入R,存储为名为overviewGenes的数据框 overviewGenes <- read.csv("overviewGenes.csv", stringsAsFactors = FALSE)
注:stringsAsFactors=FALSE是为了避免把文本列自动转成复杂的因子类型,新手用这个更省心
方法2:用readr(更快处理大文件)
# 先安装readr包(只需要安装一次) install.packages("readr") # 加载包 library(readr) # 读取数据 overviewGenes <- read_csv("overviewGenes.csv")
第二步:新增条件列(新手友好版)
我们用dplyr包来做这个操作,它的语法非常直白,像说人话一样。先安装并加载包:
# 安装dplyr包(只需要安装一次) install.packages("dplyr") # 加载包 library(dplyr)
举个具体例子(你可以直接替换成自己的条件)
假设你要新增一列叫expression_level,填充规则是:
- 如果
gene_expression列的值大于5,填"高表达" - 如果
gene_expression列的值在2-5之间,填"中表达" - 其他情况填"低表达"
代码如下(每一行都有注释,跟着改就行):
overviewGenes <- overviewGenes %>% mutate( expression_level = case_when( # 第一个条件:满足就填后面对应的值 gene_expression > 5 ~ "高表达", # 第二个条件 gene_expression >= 2 & gene_expression <= 5 ~ "中表达", # 所有不满足上面条件的情况,都填这个 TRUE ~ "低表达" ) )
关键部分解释:
%>%:可以理解为“然后”,把前面的数据框传到后面的操作里,不用写复杂的嵌套代码mutate():就是“新增一列”的意思case_when():用来写多个条件判断,比一堆嵌套的ifelse好懂太多,每个条件对应一个结果值
如果你只想用基础R(不用dplyr)
也可以用基础的ifelse()函数,两个条件的话很简单;多个条件可以嵌套,虽然不如dplyr直观,但也能解决问题:
# 两个条件的例子:如果A列数值>10,新列填"是",否则填"否" overviewGenes$new_column <- ifelse(overviewGenes$A > 10, "是", "否") # 多个条件的嵌套例子(对应上面dplyr的示例) overviewGenes$expression_level <- ifelse(overviewGenes$gene_expression >5, "高表达", ifelse(overviewGenes$gene_expression >=2, "中表达", "低表达"))
最后:保存修改后的数据集
处理完别忘了把新增列后的数据集存回CSV:
# 基础R方法 write.csv(overviewGenes, "overviewGenes_with_new_col.csv", row.names = FALSE) # readr方法(更快处理大文件) write_csv(overviewGenes, "overviewGenes_with_new_col.csv")
注:row.names=FALSE是避免把R自动生成的行号也存进文件里
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

