khung dữ liệu gốc: Recode yếu tố phân loại với N loại vào N cột nhị phân
v1 = sample(letters[1:3], 10, replace=TRUE)
v2 = sample(letters[1:3], 10, replace=TRUE)
df = data.frame(v1,v2)
df
v1 v2 1 b c 2 a a 3 c c 4 b a 5 c c 6 c b 7 a a 8 a b 9 a c 10 a b
New khung dữ liệu:
new_df = data.frame(row.names=rownames(df))
for (i in colnames(df)) {
for (x in letters[1:3]) {
#new_df[x] = as.numeric(df[i] == x)
new_df[paste0(i, "_", x)] = as.numeric(df[i] == x)
}
}
v1_a v1_b v1_c v2_a v2_b v2_c 1 0 1 0 0 0 1 2 1 0 0 1 0 0 3 0 0 1 0 0 1 4 0 1 0 1 0 0 5 0 0 1 0 0 1 6 0 0 1 0 1 0 7 1 0 0 1 0 0 8 1 0 0 0 1 0 9 1 0 0 0 0 1 10 1 0 0 0 1 0
Đối với các tập dữ liệu nhỏ này là tốt, nhưng nó trở thành sl ow cho bộ dữ liệu lớn hơn nhiều.
Bất kỳ ai biết cách thực hiện điều này mà không sử dụng tính năng lặp?
Khung dữ liệu đầu tiên của bạn có hai biến, nhưng có vẻ như bạn chỉ chuyển đổi biến thứ hai. Bạn có thể làm rõ một chút? – joran
bạn đang ghi đè dữ liệu của mình. Nó phải có 6 cột trong đầu ra. – Arun
Xin lỗi, đó là một sai lầm về phía tôi - tôi đã sửa nó trong đoạn mã trên. Nên có ba cột mới cho mỗi cột ban đầu trong ví dụ trên. Cảm ơn vì đã bắt được điều đó! –