我想重新整理数据框中的以下格式的数据:
a b Type_c d e
1 1 0 10 9
2 1 0 20 9
3 2 1 30 4
4 2 2 40 3
5 3 3 50 2
6 3 0 60 1
7 4 3 70 2
8 4 2 80 7
9 4 2 90 8
并希望通过重塑或转换以下列格式获取数据。
a b Type_0_d Type_0_e Type_1_d Type_1_e type_2_d type_2_e type_3_d type_3_e
1 1 10 9 0 0 0 0 0 0
2 1 20 9 0 0 0 0 0 0
3 2 0 0 30 4 0 0 0 0
4 2 0 0 0 0 40 3 0 0
5 3 0 0 0 0 0 0 50 2
6 3 60 1 0 0 0 0 0 0
7 4 0 0 0 0 0 0 70 2
8 4 0 0 0 0 80 7 0 0
9 4 0 0 0 0 90 8 0 0
我发现在R中做同样的事情有点困难。但是,在Tableau中它只是直截了当。只是想知道是否有办法在R中有效地做同样的事情。
答案 0 :(得分:3)
我们可以使用dcast
中的data.table
,value.var
可以使用多个library(data.table)
dcast(setDT(df1), a+b ~paste0("Type_", Type_c), value.var = c("d", "e"), fill = 0)
列
function submitNewPoll(){
var inputs = document.querySelectorAll('.fc-newpoll-option')
var polltitle = document.querySelector('.fc-newpoll-title').value
var payload = {
polltitle: polltitle
}
inputs.forEach(function(input, index) {
if (!input.value || input.value == '') {abort = true}
payload["option" + (index + 1)] = input.value
})
ajaxFunctions.ajax({
method: 'POST',
url: '/newpoll',
success: function(){console.log('success')},
error: function(err){console.log('error', err)},
payload: JSON.stringify(payload)
})
}
答案 1 :(得分:2)
另一个选项可能是使用spread
tidyr
个包
library(dplyr)
library(tidyr)
df1 %>% mutate(e1=Type_c) %>% spread(key = Type_c,value = d,fill = 0) %>% spread(key =e1,value = e,fill = 0)
我知道这是一个糟糕的解决方案,但它仍然在做这项工作。有关修改代码的任何建议都是受欢迎的。还有一件事我们必须正确地重命名列。