現在、次のようなデータフレームがあります。
speed <- c(61,24,3,10,18,19,12,12,7,9)
distance <-c(58,111,92,93,84,103,83,93,88,81)
df <- as.data.frame(cbind(speed, distance))
私が欲しいのは、距離の値に基づいて速度変数をさまざまな列に並べ替えることです。たとえば、サンプルデータフレームの場合、次のようになります。
under50 <- rep(NA,10)
under100<- c(61,3,10,18,12,12,7,9,NA,NA)
under150 <- c(61,24,3,10,18,19,12,12,7,9)
df2 <- as.data.frame(cbind(under50, under100, under150))
それぞれ100行以上の23のデータフレームがあるので、できるだけ自動化したいと思いますが、どこから始めればよいかわかりません。どんな助けでも大歓迎です!!
だからここにさらに別の方法があります:
breaks=c(50,100,150)
result <- data.frame(sapply(breaks,function(x)with(df,ifelse(distance<x,speed,NA))))
result <- sapply(result,function(x)c(na.omit(x),rep(NA,sum(is.na(x)))))
colnames(result) <- paste0("under",breaks)
result
# under50 under100 under150
# [1,] NA 61 61
# [2,] NA 3 24
# [3,] NA 10 3
# [4,] NA 18 10
# [5,] NA 12 18
# [6,] NA 12 19
# [7,] NA 7 12
# [8,] NA 9 12
# [9,] NA NA 7
# [10,] NA NA 9
この線:
result <- data.frame(sapply(breaks,function(x)with(df,ifelse(distance<x,speed,NA))))
ifelse(...)
関数roreturnを利用するspeed
かNA
、の値に応じてdistance
。この線:
result <- sapply(result,function(x)c(na.omit(x),rep(NA,sum(is.na(x)))))
NAを最後に移動します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加