我是R的新手,我会尽量清楚我的要求。
我有一个名为data_count的数据框,看起来像这样:
A B C D
1 2 3 4
5 6 5 4
3 2 1 2
3 4 5 6
5 4 3 2
首先,我想添加一个特定值出现在连续两行中的次数,我希望逐列完成。为此,我想到了循环遍历data_count以创建2个连续行的数据帧(让我们称之为data_dynamic),我只需要执行count函数。所以这大致是发生的事情:
for (i in 1:(nrow(data_count))){
limit <- i+1 # this is how I get the two rows
data_dynamic <- data[i:limit,] # this is how I get the 2-row dataframe
到目前为止,一切都很好。但现在我想在data_dynamic中计算出数字1,2,3,4,5和6出现的频率。
这样我就可以编写以下数据帧data_count2:
#1 #2 #3 #4 #5 #6
1 1 1 2 2 1
1 2 1 1 2 1
....
第一行告诉你:“在data_count的前两行中,数字1出现一次,而数字4出现两次”。
for (i in 1:(nrow(data_count))){
limit <- i+1
data_dynamic <- data[i:limit,]
for (k in 1:6){
count_example <- c(count_example,sum(data_dynamic == k)))
data_count2[,(k+1)] <- count_example
}
}
count_example应该是data_count2的一列。
由于某些原因,这不起作用。谁能帮我?我一直在努力奋斗,任何帮助都会非常感激,谢谢!
答案 0 :(得分:1)
> for (i in 1:(nrow(data_count)-1)) ( print(tabulate(unlist(data_count[i:(i+1),]))))
[1] 1 1 1 2 2 1
[1] 1 2 1 1 2 1
[1] 1 2 2 1 1 1
[1] 0 1 2 2 2 1
或者将其放在数据框中:
> d <- data.frame()
> for (i in 1:(nrow(data_count)-1)) ( d <- rbind(d,
(tabulate(unlist(data_count[i:(i+1),])))) )
> names(d) <- c(1,2,3,4,5,6)
> d
1 2 3 4 5 6
1 1 1 1 2 2 1
2 1 2 1 1 2 1
3 1 2 2 1 1 1
4 0 1 2 2 2 1
答案 1 :(得分:0)
我认为这可能会有所帮助。祝你好运!
items