我目前正在分析一个音乐专辑排名网站上的一些数据,我想把年份分组成一个范围,例如:如果专辑是在1992年发行的,那么它将被分类为1991-2010。
这是现在的数据集:音乐专辑数据集
列(Year_Range)一开始不存在。
year_range1 = c()
year_range2 = c()
year_range3 = c()
year_range4 = c()
for (x in 1950:1970){
year_range1 <- append(year_range1,x)
}
for (x in 1971:1990){
year_range2 <- append(year_range2,x)
}
for (x in 1991:2010){
year_range3 <- append(year_range3,x)
}
for (x in 2011:(format(Sys.Date(), "%Y"))){
year_range4 <- append(year_range4,x)
}
range1=0
range2=0
range3=0
range4=0
range=c()
for (x in 1:length(year)) {
if (!is.na(match(year[x],year_range1))) {
range[x] <- "1950-1970"
}else if (!is.na(match(year[x],year_range2))) {
range[x] <- "1971-1990"
}else if (!is.na(match(year[x],year_range3))) {
range[x] <- "1991-2010"
}else if (!is.na(match(year[x],year_range4))) {
range[x] <- "2011-Present"
}
}
data_set <- data.frame("Sequence" = (1:80),
"Album" = album,
"Artist" = artist,
"Score" = score,
"Raters" = rating,
"Number of reviewers" = review,
"Year_Released" = year,
"Year_Range" = range,
"Genre" = genre)
我使用上面的代码来计算出现次数,然后将它们分组到一个单独的列表中,然后将其输入到Year_Range列下的数据集中。我的问题是,有没有更好的办法?我觉得这是一段不必要的长代码,可以使用2或3个命令来修复。如有任何帮助,不胜感激。
%in%
运算符应该允许您以更短的方式计算
df$Year_range=NA #create column Year_range, df being your data frame
df$Year_range[df$year %in% 1971:1990] <- "1971-1990"
df$Year_range[df$year %in% 1991:2010] <- "1991-2010"
df$Year_range[df$year > 2011] <- "2011-Present"