将数据帧转换为 r 中的二进制特征
convert dataframe to binary features in r
我有一个数据框:
参与者 <- c(A, A, A, B, C, C)
答案 <- c(alpha、beta、gamma、beta、beta、gamma)
participants answers
A alpha
A beta
A gamma
B beta
C beta
C gamma
'answers' 专栏包含的内容远不止这一小集。
如何将其变成如下二进制特征:
participant answers value
A alpha 1
A beta 1
A gamma 1
B alpha 0
B beta 1
B gamma 0
C alpha 0
C beta 1
C gamma 1
我的猜测是我还必须获得 'answers' 和 'participants' 的水平?
但我不确定下一步该怎么做。谢谢!
如果原始数据是'df1',创建1s的列后使用complete
library(tidyr)
library(dplyr)
df1 %>%
mutate(value = 1) %>%
complete(participants, answers, fill = list(value = 0))
-输出
# A tibble: 9 × 3
participants answers value
<chr> <chr> <dbl>
1 A alpha 1
2 A beta 1
3 A gamma 1
4 B alpha 0
5 B beta 1
6 B gamma 0
7 C alpha 0
8 C beta 1
9 C gamma 1
数据
df1 <- structure(list(participants = c("A", "A", "A", "B", "C", "C"),
answers = c("alpha", "beta", "gamma", "beta", "beta", "gamma"
)), class = "data.frame", row.names = c(NA, -6L))
在基础 R 中你可以这样做:
data.frame(table(df1))
participants answers Freq
1 A alpha 1
2 B alpha 0
3 C alpha 0
4 A beta 1
5 B beta 1
6 C beta 1
7 A gamma 1
8 B gamma 0
9 C gamma 1
以上的排序方式与您的 table 不同。为此,您可以这样做:
with(a<-data.frame(table(df1)), a[order(participants),])
participants answers Freq
1 A alpha 1
4 A beta 1
7 A gamma 1
2 B alpha 0
5 B beta 1
8 B gamma 0
3 C alpha 0
6 C beta 1
9 C gamma 1
我有一个数据框:
参与者 <- c(A, A, A, B, C, C)
答案 <- c(alpha、beta、gamma、beta、beta、gamma)
participants answers
A alpha
A beta
A gamma
B beta
C beta
C gamma
'answers' 专栏包含的内容远不止这一小集。
如何将其变成如下二进制特征:
participant answers value
A alpha 1
A beta 1
A gamma 1
B alpha 0
B beta 1
B gamma 0
C alpha 0
C beta 1
C gamma 1
我的猜测是我还必须获得 'answers' 和 'participants' 的水平?
但我不确定下一步该怎么做。谢谢!
如果原始数据是'df1',创建1s的列后使用complete
library(tidyr)
library(dplyr)
df1 %>%
mutate(value = 1) %>%
complete(participants, answers, fill = list(value = 0))
-输出
# A tibble: 9 × 3
participants answers value
<chr> <chr> <dbl>
1 A alpha 1
2 A beta 1
3 A gamma 1
4 B alpha 0
5 B beta 1
6 B gamma 0
7 C alpha 0
8 C beta 1
9 C gamma 1
数据
df1 <- structure(list(participants = c("A", "A", "A", "B", "C", "C"),
answers = c("alpha", "beta", "gamma", "beta", "beta", "gamma"
)), class = "data.frame", row.names = c(NA, -6L))
在基础 R 中你可以这样做:
data.frame(table(df1))
participants answers Freq
1 A alpha 1
2 B alpha 0
3 C alpha 0
4 A beta 1
5 B beta 1
6 C beta 1
7 A gamma 1
8 B gamma 0
9 C gamma 1
以上的排序方式与您的 table 不同。为此,您可以这样做:
with(a<-data.frame(table(df1)), a[order(participants),])
participants answers Freq
1 A alpha 1
4 A beta 1
7 A gamma 1
2 B alpha 0
5 B beta 1
8 B gamma 0
3 C alpha 0
6 C beta 1
9 C gamma 1