私はこのようなデータセットを持っている:形状変更データ
id value1 value2
1 A True
2 B False
3 A True
4 C True
私は複数の値を持つ列を識別し、複数の列に変換したいですR.でTrueまたはFalseの値と結果は次のようになります。
id value1.A value1.B value1.C value2
1 True False False True
2 False True False False
3 True False False True
4 False True False True
私はこのためにdcast使用するかどうかはわかりません。私は自分自身で関数を書いたが、それは遅すぎる。そのためのコードはここにある:
library(dplyr)
library(tidyr)
df %>%
mutate(value = TRUE) %>%
spread(value1, value, fill = FALSE, sep = '.')
出力::あなたはこのようtidyr使用することができます
to_multiple_columns <- function(col,attr_name){
elements <- names(table(col))
drops <- c("","True","False")
elements <- elements[ !elements %in% drops]
new_df <- data.frame(col) # to define data frame with nrows,ncols
if(length(elements) > 0){
new_attr_names <- paste(attr_name,elements,sep = ".")
for(j in 1:length(new_attr_names)){
new_df <- data.frame(new_df,grepl(elements[j],col))
}
drops <- c("col") #drop original col
new_df <- new_df[,!(names(new_df) %in% drops)]
names(new_df) <- new_attr_names
}
return(new_df)
}
を使用することができます。 NAはフィルで置き換えられます。 – Bhail