【发布时间】:2014-12-06 17:30:56
【问题描述】:
我有一个评分和用户表。 我想在名为“AvRating”的用户表中添加一个新列 对于该列的每一行,我想要每个用户给出的平均评分。 我遍历 Ratings 表中的所有用户 ID,并获得所有相应评级的平均值。 但是,“AvRating”列包含一堆 N/A,仅此而已。
Ratings = read.table("Ratings.txt",
sep="\t",
col.names=c("ID", "MId", "Rating"),
fill=FALSE,
strip.white=TRUE)
Users = read.table("Users.txt",
sep="\t",
col.names=c("ID", "Age", "Gender", "Occupation", "ZIP"),
fill=FALSE,
strip.white=TRUE)
Users["AvRating"] <- NA
for(i in 1:943){ # 943 rows in "Ratings" table
N = 0
x = i
# Counting number of ratings by specific User
while(Ratings[1, i]==x){
N=N+1
}
x = i
temp = rep(0, N)
for(j in 0:N){
temp[j] = Ratings[3, i]
}
t = mean(temp)
Users[6][i] = t
}
Users[6]
【问题讨论】:
-
你试过
?rowMeans吗? -
rowMeans 或 colMeans 不起作用,因为我没有计算整个列,我正在计算由 ID 1、ID 2、ID 3 等做出的任何评级的平均值。
-
基本方法是使用
ave。 -
只需子集您正在使用的列并将其传递给
rowMeans? -
你能告诉我这是如何在我的问题的上下文中完成的吗?
标签: r rows multiple-columns