我只是R的学习者,并且有一个相当基本的问题。
我有一个名为edata的数据集,其中有两列与发布的问题相关。这些是GazeCue和TargetLocation。我希望创建一个名为CueType的新列,根据其他两列的值显示为“Cued”或“Uncued”。
当GazeCue等于RightGazePic1.png且TargetLocation等于TargetR时,新的CueType列应显示为“Cued”。类似地,当GazeCue等于LeftGazePic1.png且TargetLocation等于TargetL时,CueType列应再次显示为“Cued”。任何其他值的变化都应该在CueType中显示为“uncued”。
我想要的一个例子粘贴在下面。
GazeCue TargetLocation CueType
RightGazePic1.png TargetR Cued
LeftGazePic1.png TargetL Cued
RightGazePic1.png TargetL Uncued
LeftGazePic1.png TargetR Uncued
我一直在尝试使用ifelse完成此代码,但没有运气。任何建议都将不胜感激。
答案 0 :(得分:3)
这是非常基本的。一种方法是从png和Target中提取L和R,并使用ifelse
进行比较:
CueType <- ifelse(substr(GazeCue, 1,1) == substr(TargetLocation, 7,7),
"Cued",
"Uncued")
如果名称可能会有所不同,请在进行比较之前先查看gsub
从字符串中提取相关信息。
答案 1 :(得分:1)
你也可以利用R回收载体的事实:
ix <- (substr(df$GazeCue,1,1) == substring(df$TargetLocation,7)) + 1
df$CueType <- c("Uncued","Cued")[ix]
答案 2 :(得分:0)
你可以试试这个:
edata[,3] <- NA #add a new column
names(edata)[3] <- "CueType" #add a name column
for (i in 1 : nrow(edata)) {
if (edata$GazeCue[i] == 'RightGazePic1.png' & edata$TargetLocation[i]==
'TargetR') {
edata[i,3] <- "Cued"
} else if (edata$GazeCue[i] == 'LeftGazePic1.png' & data$TargetLocation[i]
=='TargetL') {
edata[i,3] <- "Cued"
}
else {
edata[i,3] <- "Uncued"
}
}
测试,它应该正常工作!