我正在尝试让最后一列从第5列获取数据。如果角色是" M"它应该做点什么,如果" F"别的,这是我的代码:
wd="c:/users/Youssef/Documents/Fares/R/employes.txt";
setwd(wd);
employes=read.table("c:/users/Youssef/Documents/Fares/R/employes.txt", sep=" ")
employes["PRIMES"] <- NA
x = "M"
ifelse(employes$V3==x, employes$PRIMES <- employes$V5*2, employes$PRIMES <- employes$V5*3)
employes
这是我的文本文件:
AD5522 42 M 42000 10
BR4230 39 F 38000 12
CC0563 39 F 35000 14
DL3222 24 M 28000 2
EM0157 43 M 38000 15
FG5441 62 M 45000 28
GG0575 27 M 44000 4
HD4410 55 F 30000 2
IA1203 32 F 28000 4
JO9876 24 F 24000 2
KJ3481 42 M 40000 8
LL1101 34 M 42000 10
MM0157 56 M 87000 15
ZD5431 34 M 54000 28
SF0325 73 M 33000 4
LK4200 61 F 23000 2
PI1243 26 F 74000 4
NB9809 42 F 64000 2
XF3111 71 M 12000 8
AL1190 23 M 53000 10
我想要做的是创建一个名为PRIMES的新列,并将第5列的值加倍并将其放在那里,如果它是M,如果它是F,则将其加倍。但是我的是什么代码确实是三重一切,好像它只读取第一个M并将每个数字乘以3并将其放在列PRIMES上
答案 0 :(得分:3)
employes$PRIMES <- ifelse(employes$V3==x, employes$V5*2, employes$V5*3)
生成一个向量。你想要这个:
employes$PRIMES <- employes$V5 * ifelse(employes$V3==x, 2, 3)
或更简单有效(谢谢@Richard)
2
这会创建一个3
&{39}和{{1}}的向量,用于乘法。
答案 1 :(得分:0)
这是一个明智的方式:
library(dplyr)
data =
employes %>%
setNames(c("ID", "age", "gender", "long", "short"))
gender_key = data_frame(
gender = c("M", "F"),
multiplier = c(2, 3) )
result =
data %>%
left_join(gender_key) %>%
mutate(new_short = short * multiplier)