0

R の新規ユーザーです。質問の仕方すら考えられません。HTML テーブルの Web ページをスクレイピングしました。一般的に、1 つのテーブルを除いて、すべてがうまくいきました。7 つの個別のテーブルが存在する代わりに、すべてが 1 つのテーブルに折りたたまれ、最初のテーブルの列名と値が 2 つの個別の列になり、他のすべてのテーブルは行になります。結果は、次のようなテーブルです。

df <- data.frame(is_employed = c("Hobbies", "Has Previous Experience"), false = c("squash", "false"))

明らかに、最初の列の行 (および列名) を独自の列として、2 番目の列の項目を値として、できれば列名にアンダースコアを使用する必要があります。私は試した:

df <- dcast(df, ~is_employed, value.var = "false")

しかし、エラーメッセージが表示されました。次に、別の列を追加することを考えました。

df2 <- data.frame(number = c(1, 2), is_employed = c("Hobbies", "Has Previous Experience"), false = c("squash", "false"))

それから私は試しました

df3 <- dcast(df2, number ~is_employed, value.var="false")

これにより、最初の列の値が独自の列として配置されましたが、NA を持つ 2 つの行 (1 ではなく) が生成されました。これは本当に基本的なことだと確信していますが、理解できません。

編集時:これで欲しいものが得られると思いますが、コンピューターから離れているため確認できません:

library("dplyr")
library("tidyr")

mat <- as.matrix(df)
mat <- rbind(colnames(mat), mat)
colnames(mat) <- c("variable", "value")


df2 <- as.data.frame(mat)

df3 <- df2 %>%
   mutate(n = 1) %>%
   spread(variable, value) %>%
   select(-n)

追加する必要がある nか、NA を取得する必要がありますが、好きではありません。

4

1 に答える 1