如何在数据帧中使用R编程更改变量值

如何在数据帧中使用R编程更改变量值,r,R,我正在学习R编程,并已导入CSV文件。现在,我想更改symbol列的变量值。如果值为“ABCD.BO”,则为“Stock\T”。如果值为“XYZ.BO”,则为“Stock_Y”。我尝试了下面的代码,但是,我收到了一条警告消息,并且在更改后检查了数据帧是否包含“NA” df$symbol[df$symbol == "ABCD.BO"] <- "Stock_T" df$symbol[df$symbol == "XYZ.BO"] <- "Stock_Y" Warning message:

我正在学习R编程,并已导入CSV文件。现在,我想更改symbol列的变量值。如果值为“ABCD.BO”,则为“Stock\T”。如果值为“XYZ.BO”,则为“Stock_Y”。我尝试了下面的代码,但是,我收到了一条警告消息,并且在更改后检查了数据帧是否包含“NA”

df$symbol[df$symbol == "ABCD.BO"] <- "Stock_T"
df$symbol[df$symbol == "XYZ.BO"] <- "Stock_Y"

Warning message:
In `[<-.factor`(`*tmp*`, df$symbol == "ABCD.BO",  :
  invalid factor level, NA generated

symbol  Date    Adj.Close
ABCD.BO 9/21/2011   201.33
ABCD.BO 9/22/2011   192.9
ABCD.BO 9/23/2011   190.47
ABCD.BO 9/26/2011   185.95
ABCD.BO 9/27/2011   190.52
ABCD.BO 9/28/2011   191.82
ABCD.BO 9/29/2011   189.49
ABCD.BO 9/30/2011   186.74
XYZ.BO  2/10/2012   334.11
XYZ.BO  2/13/2012   336.14
XYZ.BO  2/14/2012   343.74
XYZ.BO  2/15/2012   351.83
XYZ.BO  2/16/2012   352.8
XYZ.BO  2/17/2012   350
XYZ.BO  2/20/2012   350
XYZ.BO  2/21/2012   354.63
XYZ.BO  2/22/2012   333.68
XYZ.BO  2/23/2012   340.57
XYZ.BO  2/24/2012   327.9

df$symbol[df$symbol==“ABCD.BO”]有很多方法可以做到这一点。这里有两个

第一个是改变所有因素水平。如果您有一个符号向量要更改,并且它们与符号的
级别的顺序相同,那么这可能是最容易做到的

within(df, levels(symbol) <- paste("Stock", c("T", "Y"), sep = "_"))

在(df,levels(symbol)中,有很多方法可以做到这一点

第一个是用于更改所有因子级别。如果您有一个符号向量要更改,并且它们与符号的
级别的顺序相同,那么这可能是最容易做到的

within(df, levels(symbol) <- paste("Stock", c("T", "Y"), sep = "_"))

在(df,levels(symbol)中,它不会更改,因为新值不是该列的命名因子之一。您可以使用:

stringsAsFactors = FALSE in read.csv command
或将符号列转换为字符:

df$symbol = as.character(df$column)

然后,您的命令将起作用。

它不会更改,因为新值不是该列的命名因子之一。您可以使用:

stringsAsFactors = FALSE in read.csv command
或将符号列转换为字符:

df$symbol = as.character(df$column)
然后,您的命令将起作用。

在这里,尝试以下操作:

df$symbol <- as.character(df$symbol)
df$symbol[df$symbol == "ABCD.BO"] <-"Stock_T"
df$symbol给你,试试这个:

df$symbol <- as.character(df$symbol)
df$symbol[df$symbol == "ABCD.BO"] <-"Stock_T"

df$symbol我建议对
级别更加明确,提供一个命名列表,可能类似于:
级别(df$symbol)我建议对
级别更加明确,提供一个命名列表,可能类似于:
级别(df$symbol)