【发布时间】:2017-12-09 11:27:42
【问题描述】:
我遇到了一个关于“下标越界”的问题,我想要的是获得每个观察值的第一个月和最后一个月,其中我有三个连续的“1”或“True”。我想在第一个月和最后一个月分别创建 2 个新列“开始”和“结束”。 在我的第一个观察示例中:开始等于 avril,结束等于 juin 在 5 观察:开始等于 fevrier,结束等于 avril 在 9 观察:开始等于 janvier,结束等于 mars ...
我试过这样做:
nom <- letters[1:5]
pseudo <- paste(name, 21:25, sep = "")
janvier <- c(0, 1, 1, 1, 0)
fevrier <- c(1, 1, 1, 1, 1)
mars <- c(0, 0, 0, 1, 1)
avril <- c(1, 1, 1, 0, 1)
mai <- c(1, 0, 1, 1, 1)
juin <- c(1, 1, 0, 1, 0)
df <- data.frame(nom =nom, pseudo = pseudo, janvier = janvier,
fevrier = fevrier, mars = mars, avril = avril,
mai = mai, juin = juin)
dfm <- as.matrix(df[, -c(1, 2)])
my_matrix <- matrix(nrow = 10, ncol = 6)
for(i in 1:dim(dfm)[1]){
for(j in 1:dim(dfm)[2]){
if(dfm[i, j] + dfm[i, j+1] + dfm[i, j+2] == 3){
my_matrix[i, j] <- "periode_ok"
my_matrix[i, j+1] <- "periode_ok"
my_matrix[i, j+2] <- "periode_ok"
}
}
}
输出应该是这样的:
begin <- c("avril", "no info", "no info",
"janvier", "fevrier", "avril", "no info",
"no info", "janvier", "fevrier")
end <- c("juin", "no info", "no info", "mars",
"avril", "juin", "no info", "no info",
"mars", "avril")
output <- data.frame(nom =nom, pseudo = pseudo, janvier = janvier,
fevrier = fevrier, mars = mars, avril = avril,
mai = mai, juin = juin, begin = begin,end = end)
任何帮助将不胜感激
【问题讨论】:
-
for(j in 1:(dim(dfm)[2]-2))使用这个。 -
pseudo的长度应为 5,与所有其他变量一样。 -
@DavidArenburg 我已经在另一篇文章中解决了您的问题。同时,我认为评论的语言和内容不符合 Be Nice 政策。干杯。