以下是我的数据集的示例
df1<- read.table(text=" Month Crime
2010-12 Anti-social-behaviour
2010-12 Anti-social-behaviour
2010-12 Anti-social-behaviour
2010-12 Robbery
2010-12 Robbery
2010-12 Violent-Crime
2010-12 Violent-Crime
2010-12 Theft
2011-01 Anti-social-behaviour
2011-01 Anti-social-behaviour
2011-01 Anti-social-behaviour
2011-01 Anti-social-behaviour
2011-01 Arson
2011-01 Arson
2011-01 Theft
2011-01 Theft
2011-01 Theft
2011-01 Theft
2011-01 Theft", header=TRUE)
我打算将其转换为以下格式以便能够对其进行分析。
Month Crime Frequency
2010-12 Anti-social-behaviour 3
2010-12 Robbery 2
2010-12 Violent Crime 2
2010-12 Theft 1
2011-01 Anti-social behaviour 4
2011-01 Arson 2
2011-01 Theft 5
由于我不熟悉 reshape 包,并且我想自学使用基本函数,我制定了自己的方法:
#convert months to factor
crimeData3$Month<- factor(crimeData3$Month, ordered=TRUE)
#calculate instances of each factor level
instances<- table(crimeData3$Month)
mySeq<- numeric(0)
myseqFinal<- numeric(0)
#append letters to each crime for each factor level, to identify crimes at month-level
for (i in 1:length(instances)){
mySeq<- rep(LETTERS[i], times=instances[i])
myseqFinal<- c(myseqFinal,mySeq)
}
crimeData3$CrimeNew<- paste(crimeData3$Crime, myseqFinal, sep=" ")
crimeData3$CrimeNew<- factor(crimeData3$CrimeNew, ordered=TRUE)
在此之后我希望做的是计算每次犯罪的频率。由于所有罪行都在月份级别上进行了唯一标记,因此我认为计算频率并简单地将结果以相同的顺序添加到新数据框中会很容易。
但是,一旦我将 table 函数应用于 crimeData3$Crime,犯罪的顺序就会变得混乱。
还有另一种更简单的方法吗?可以操纵我的代码来提供解决方案吗?对于使用基本功能和专业功能的任何帮助,我将不胜感激。
非常感谢。