有条件地向新列添加值,并替换R中条件列中的值
我正在进行一个项目,在这个项目中,我需要将文件读入我的环境中,然后根据行的名称更改一个值并向新列添加新值:即有条件地向新列添加值,并替换R中条件列中的值,r,dataframe,replace,R,Dataframe,Replace,我正在进行一个项目,在这个项目中,我需要将文件读入我的环境中,然后根据行的名称更改一个值并向新列添加新值:即 X1 Area Mean Min Max file_row_name 55 0.165 31.384 4 82 ./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv 56 0.097 45.867 4 121 ./Flu
X1 Area Mean Min Max file_row_name
55 0.165 31.384 4 82 ./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv
56 0.097 45.867 4 121 ./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv
168 0.042 28.252 20 49 ./Fluorescence Analysis/T0-25-50-10x-1-1.csv
因此,在本例中,我想查看每一行的文件行行名
,如果行名相同,则创建两个变量:Conc
&Rep
,并替换文件行名
处的值,如下所示:
X1 Area Mean Min Max file_row_name Conc Rep
55 0.165 31.384 4 82 T0 12.5 3
56 0.097 45.867 4 121 T0 12.5 3
168 0.042 28.252 20 49 T0 25 1
到目前为止,我所做的是:
my_df$Conc[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv"] <- 12.5
my_df$Rep[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv"] <- 3
my_df$file_row_name[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv"] <- "T0"
my_df$Conc[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3.csv"] <- 12.5
my_df$Rep[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3.csv"] <- 3
my_df$file_row_name[my_df$file_row_name == "./Fluorescence Analysis/T0-12.5-150-10x-3.csv"] <- "T0"
它告诉我:
Warning message:
In if (my_df$file_row_name %in% c("./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv", :
the condition has longitud > 1 and only the first element will be used
如果我设法用另一个代码块绕过警告消息,基本上,
文件行名
Conc
和Rep
列将被替换为相同的值,并且不会根据条件进行任何更改。而不是if
(未矢量化),我们创建一个逻辑行索引并使用它来分配
i1 <- my_df$file_row_name %in% c("./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv",
"./Fluorescence Analysis/T0-12.5-150-10x-3.csv")
mydf[i1, c("Conc", "Rep", "file_row_name")] <- list("12.5", 3, "T0")
i1如果
没有矢量化,你可以使用ifelse
但是我认为它不允许我添加列,或者我不知道如何做。你能检查下面发布的解决方案吗
i1 <- my_df$file_row_name %in% c("./Fluorescence Analysis/T0-12.5-150-10x-3-1.csv",
"./Fluorescence Analysis/T0-12.5-150-10x-3.csv")
mydf[i1, c("Conc", "Rep", "file_row_name")] <- list("12.5", 3, "T0")