我试图在现有数据集中添加一行,我从csv文件读入R中。
数据集如下所示:
Format PctShare
1 NewsTalk 12.6
2 Country 12.5
3 AdultContemp 8.2
4 PopHit 5.9
5 ClassicRock 4.7
6 ClassicHit 3.9
7 RhythmicHit 3.7
8 UrbanAdult 3.6
9 HotAdult 3.5
10 UrbanContemp 3.3
11 Mexican 2.9
12 AllSports 2.5
在命名数据集" share"之后,我尝试使用此代码向其添加第13行:
totalshare <- rbind(share, c("Others", 32.7)
- &GT;它没有工作,并给了我这个警告信息:
Warning message:In`[<-.factor`(`*tmp*`, ri, value = "Others"):invalid factor level, NA generated
但是,当我尝试使用此代码在数据集中输入具有现有字符值(&#34; AllSports&#34;)的行时:
rbind(share, c("AllSports", 32.7))
- &GT;它完美地添加了行
我想知道是否需要告诉R在列#34;格式&#34;下面有一个新的字符值。在我将新行绑定到R?
之前答案 0 :(得分:2)
您的format
列是factor
个变量。有关详细信息,请查看str(share)
,str(share$format)
,class(share$format)
和levels(share$format)
。 rbind(share, c("AllSports", 32.7)
工作的原因是因为"AllSports"
已经是format
变量的现有因子级别。
要解决此问题,请通过以下方式将format
列转换为character
share$format <- as.character(share$format)
对factor
变量进行一些搜索并设置因子级别以了解更多信息。此外,当您从csv读取文件时,可以强制任何字符串不转换为具有选项stringsAsFactors = FALSE
的因子 - 例如share <- read.csv(myfile.csv, stringsAsFactors = FALSE)
。
答案 1 :(得分:1)
我想到的两个解决方案
解决方案1: - 在阅读数据之前
options(stringsAsFactors = F)
或 解决方案2: - 正如@JasonAizkalns所建议的