如何解决使用ifelse语句根据具有相同数据集的数据在数据集中创建新变量
我是R的新手,我正在尝试为项目排序一些数据。基本上,我得到了一个包含四个变量的数据集,我想将其中两个结合起来以构成第五个变量。我要合并的变量是“星期几”和“上午/下午”,以构成“一周中的时间”变量(例如,星期一上午,星期一下午等)。我正在使用RStudio编译数据。
project.dat
包含四个变量:
Company | Day | Time(AM/PM) | Price
我想为petrol
创建第五个变量,该变量是“日期”和“时间”的组合:
Company | Day | Time(AM/PM) | Price | TOW
我尝试了两种方法:
1:使用ifelse
检查一天中的时间,然后使用占位符添加一天中的时间。我使用了在网上找到的各种占位符运算符,这恰好是我尝试的最后一个。
attach(project.dat)
Timeweek <- ifelse(Time=="am","#% AM" ["Day"],"#% PM",["Day"])
petrol <- project.dat
petrol$TOW <- Timeweek
detach(petrol)
此方法可以过滤一天中的时间,但是我无法让占位符将Day添加到新变量中。
2:分别检查日期和时间,并分别添加新变量。此方法进行了遍历,并为每行分配了“星期一上午”。如果我删除第一行,它将为每行分配“未定义”。我在项目的其他部分使用这种方法没有遇到任何麻烦,但是其他应用程序只有一个条件(即否&&)。
attach(project.dat)
Timeweek <- ifelse(Day=="Mon" && Time=="am","Mon AM",ifelse(Day=="Mon" && Time=="pm","Mon PM",ifelse(Day=="Tue" && Time=="am","Tue AM",ifelse(Day=="Tue" && Time=="pm","Tue PM",ifelse(Day=="Wed" && Time=="am","Wed AM",ifelse(Day=="Wed" && Time=="pm","Wed PM",ifelse(Day=="Thur" && Time=="am","Thur AM",ifelse(Day=="Thur" && Time=="pm","Thur PM",ifelse(Day=="Fri" && Time=="am","Fri AM",ifelse(Day=="Fri" && Time=="pm","Fri PM",ifelse(Day=="Sat" && Time=="am","Sat AM",ifelse(Day=="Sat" && Time=="pm","Sat PM",ifelse(Day=="Sun" && Time=="am","Sun AM",ifelse(Day=="Sun" && Time=="pm","Sun PM","Undefined")))))))))))))
petrol <- project.dat
petrol$TOW <- Timeweek
detach(petrol)
原始数据集的前几行(按公司排序)(星号是我要添加的数据):
Company Day Time Price **TOW**
1 BP Mon am 102.3 **Mon AM**
2 BP Mon am 108.1 **Mon AM**
3 BP Mon am 112.0 **Mon AM**
4 BP Mon pm 110.2 **Mon PM**
5 BP Mon pm 115.1 **Mon PM**
16 BP Tue am 102.5 **Tue AM**
17 BP Tue am 112.1 **Tue AM**
18 BP Tue am 118.7 **Tue AM**
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。