如何基于数据框中的另一列修复我对新列的命名

时间:2019-02-12 20:21:02

标签: r dplyr tidyverse tidyr

我的代码似乎可以正常工作,但是由于我的代码中存在一些隐藏因素,因此我在分析中遇到了进一步的问题。我已经添加了“微生物”专栏,那里没有问题。但我认为Microbe.PR专栏可能是我遇到的问题的第一部分。

我有一个测试数据,该数据需要基于“ conc.dil”列中的值添加一个稀释列,并基于BKA列添加一个杀死列。这也都基于Microbe.PR列。

我的数据看起来像这样:

    SampleID        Date Conc.Dil          BKA Microbe Microbe.PR Dilution Killing
1577   102364  08.12.2018 0.003906 3.175029e+00      EC       ECSK      D12     K12
1578   102364  08.12.2018 0.005859 8.943744e-03      EC       ECSK      D11     K11
1579   102364  08.12.2018 0.007813 6.573652e+00      EC       ECSK      D10     K10
1580   102364  08.12.2018 0.011719 1.833467e+00      EC       ECSK       D9      K9
1581   102364  08.12.2018 0.015625 6.707808e-01      EC       ECSK       D8      K8
1582   102364  08.12.2018 0.023438 1.007692e+02      EC       ECSK       D7      K7

我的Microbe.PR代码如下:

EC$Microbe.PR <- 
  ifelse (EC$Protocol.File.Name == "KILLER E COLI protocolHC","ECSK",
          ifelse(EC$Protocol.File.Name == "KILLER E COLI protocolUSF", "ECSK",
                 ifelse(EC$Protocol.File.Name == "KILLER E COLI protocol", "ECSK",
                        ifelse(EC$Protocol.File.Name == "E COLI protocol", "EC", 
                               ifelse(EC$Protocol.File.Name == "E COLI protocolUSF", "EC", "EC"))))) 

运行此代码时,这些是我的结果:

EC$Microbe.PR <- as.factor(EC$Microbe.PR)
> levels(EC$Microbe.PR)
[1] "EC"   "ECSK"

> EC_SK <- subset(EC, EC$Microbe.PR %in% c("ECSK"))
> levels(EC_SK$Microbe.PR)
[1] "EC"   "ECSK"

当我使用EC_SK进行电平处理时,Microbe.PR中应该没有“ EC”值。当我对此进行总结时,它说“ EC”有0个值,而ECSK有1120个值是正确的。

0 个答案:

没有答案