R 为什么这个数据框不填充?
我正在使用R编程语言。我试图用For循环填充数据帧。数据帧将不会填充。有人能看看我的代码,告诉我出了什么问题吗?我使用的数据汇编了一系列电影及其收入。下面是我正在使用的代码。对于所有单元格,数据帧保持NA填充状态 谢谢R 为什么这个数据框不填充?,r,R,我正在使用R编程语言。我试图用For循环填充数据帧。数据帧将不会填充。有人能看看我的代码,告诉我出了什么问题吗?我使用的数据汇编了一系列电影及其收入。下面是我正在使用的代码。对于所有单元格,数据帧保持NA填充状态 谢谢 weeks = unique(movieDB$releaseDate) weeks finalDB = data.frame(matrix(NA,length(weeks),3)) finalDB colnames(finalDB) = c("date","releaseLo
weeks = unique(movieDB$releaseDate)
weeks
finalDB = data.frame(matrix(NA,length(weeks),3))
finalDB
colnames(finalDB) = c("date","releaseLogBoxOfficeDiff","laterLogBoxOfficeDiff")
finalDB
# Populate the Data Frame #
for(i in 1:nrow(movieDB)){
row = finalDB$date == movieDB$releaseDate[i]
films = subset(movieDB, releaseDate[i] == movieDB$releaseDate & releaseRank <=2)
if(nrow(films) == 2) {
releaseWeek1 = films$releaseWeekEarnings[films$releaseRank == 1]
releaseWeek2 = films$releaseWeekEarnings[films$releaseRank == 2]
laterWeek1 = films$subsequentEarnings[films$releaseRank == 1]
laterWeek2 = films$subsequentEarnings[films$releaseRank == 2]
finalDB$releaseLogBoxOfficeDiff[row] = log(releaseWeek1) - log(releaseWeek2)
}
}
看看movieDB实际上包含了什么。制作headmovieDB和strmovieDB。数据是否与您期望的一样
以下是示例数据的外观:
> head(movieDB)
Number Title releaseWeekEarnings subsequentEarnings releaseDate releaseRank
1 1 À Deriva NA 0 <NA> 1
2 2 à la folie... pas du tout 91630 632364 2/14/03 4
3 3 à L'Intérieur NA 0 <NA> 2
4 4 A Mulher Invisível NA 0 <NA> 3
5 5 A.K.: The Making of Ran NA 0 <NA> 4
6 6 Aage Se Right NA 0 <NA> 5
> str(movieDB)
'data.frame': 8 obs. of 6 variables:
$ Number : int 1 2 3 4 5 6 7 8
$ Title : Factor w/ 8 levels "À Deriva","à L'Intérieur",..: 1 3 2 4 5 6 7 8
$ releaseWeekEarnings: int NA 91630 NA NA NA NA 257500 NA
$ subsequentEarnings : int 0 632364 0 0 0 0 144599 0
$ releaseDate : Factor w/ 2 levels "11/30/07","2/14/03": NA 2 NA NA NA NA 1 NA
$ releaseRank : int 1 4 2 3 4 5 2 6
>
现在您的代码可以运行了,但由于相关列包含缺少的数据(只有第二部电影列出了发行日期),因此使用这些缺少的值进行的所有计算也必须产生NA:
您能提供样本数据吗?1\xc1衍生产品NA 1 2\xe0 la folie。。。这是一个很好的例子:拉那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那那非洲1857 1674 5/3/02 11 12 12 ABCD 83372 NA 11/30/01 4 13绑架:美眉横田故事5034 8019 11/24/06 7标题发布周末学习后续发布日期发布排名1\xc1衍生产品NA 0 NA 1 2\xe0 la folie。。。这句话的意思是:第二句话有帮助吗?我从excel CSV复制并粘贴。格式也是如此。以下5列-标题、发布周警告、后续警告、发布日期、发布日期和不在评论中发布数据。。真正地
> head(movieDB)
Number Title releaseWeekEarnings subsequentEarnings releaseDate releaseRank
1 1 À Deriva NA 0 <NA> 1
2 2 à la folie... pas du tout 91630 632364 2/14/03 4
3 3 à L'Intérieur NA 0 <NA> 2
4 4 A Mulher Invisível NA 0 <NA> 3
5 5 A.K.: The Making of Ran NA 0 <NA> 4
6 6 Aage Se Right NA 0 <NA> 5
> str(movieDB)
'data.frame': 8 obs. of 6 variables:
$ Number : int 1 2 3 4 5 6 7 8
$ Title : Factor w/ 8 levels "À Deriva","à L'Intérieur",..: 1 3 2 4 5 6 7 8
$ releaseWeekEarnings: int NA 91630 NA NA NA NA 257500 NA
$ subsequentEarnings : int 0 632364 0 0 0 0 144599 0
$ releaseDate : Factor w/ 2 levels "11/30/07","2/14/03": NA 2 NA NA NA NA 1 NA
$ releaseRank : int 1 4 2 3 4 5 2 6
>
movieDB <- read.table(textConnection("
Number Title releaseWeekEarnings subsequentEarnings releaseDate releaseRank
1 \"À Deriva\" NA 0 NA 1
2 \"à la folie... pas du tout\" 91630 632364 2/14/03 4
3 \"à L'Intérieur\" NA 0 NA 2
4 \"A Mulher Invisível\" NA 0 NA 3
5 \"A.K.: The Making of Ran\" NA 0 NA 4
6 \"Aage Se Right\" NA 0 NA 5
7 \"Aaja Nachle\" 257500 144599 11/30/07 2
8 \"Aap Kaa Surroor\" NA 0 NA 6
"), header=TRUE)
> weeks = unique(movieDB$releaseDate)
> weeks
[1] <NA> 2/14/03 11/30/07
Levels: 11/30/07 2/14/03
>
> finalDB = data.frame(matrix(NA,length(weeks),3))
> finalDB
X1 X2 X3
1 NA NA NA
2 NA NA NA
3 NA NA NA
>
> colnames(finalDB) = c("date","releaseLogBoxOfficeDiff","laterLogBoxOfficeDiff")
> finalDB
date releaseLogBoxOfficeDiff laterLogBoxOfficeDiff
1 NA NA NA
2 NA NA NA
3 NA NA NA
>
>
> # Populate the Data Frame #
> for(i in 1:nrow(movieDB)){
+ row = finalDB$date == movieDB$releaseDate[i]
+ films = subset(movieDB, releaseDate[i] == movieDB$releaseDate & releaseRank <=2)
+ if(nrow(films) == 2) {
+ releaseWeek1 = films$releaseWeekEarnings[films$releaseRank == 1]
+ releaseWeek2 = films$releaseWeekEarnings[films$releaseRank == 2]
+ laterWeek1 = films$subsequentEarnings[films$releaseRank == 1]
+ laterWeek2 = films$subsequentEarnings[films$releaseRank == 2]
+ finalDB$releaseLogBoxOfficeDiff[row] = log(releaseWeek1) - log(releaseWeek2)
+ }
+ }
> finalDB
date releaseLogBoxOfficeDiff laterLogBoxOfficeDiff
1 NA NA NA
2 NA NA NA
3 NA NA NA