2017-05-09 62 views
1

由行值的列的变更行值我有一个数据帧,例如:的R - 从另一列

X1 X2 
A Type1 
A Type2 
N Type1 
A Type3 
N Type2 
N Type2 

X1和X2因素和不是字符。

我想有以下数据帧:

X1 X2 
A Type1 
A Type2 
N NR 
A Type3 
N NR 
N NR 

正如你可以看到,当X1等于“N”,我想X2等于“NR”。我尝试使用ifelse和其他函数,但它不起作用并返回“FALSE”。

这里是我已经尝试了代码:

df<-within(df, X2[X1=="N"] <- 'NR') 
+0

最有可能的分配,问题是,你是用因子变量,而不是字符工作变量。你可以使用'str(df)'来检查它,其中df是你的data.frame的名字。要读取字符变量,请在'read.csv'或'read.table'中使用'as.is = TRUE'。例如,您可以使用'df $ X1 < - as.character(df $ X1)'来转换为字符。使用字符变量(特别是将X2作为字符向量)时,'df [df $ X1 ==“N”,“X2”] < - “NR”'将完成您想要的操作。 – lmo

回答

0

我们可以使用data.table到位

library(data.table) 
setDT(df1)[X1=="N", X2 := "NR"] 
+1

谢谢!这样可行。 – MVachelard