我有2个数据框。第一个是调查工具(df1)的输出,第二个是评分/传说(df2)。 df1包含一些人口统计信息和大约360个“问题结果ID”(qo_id = qo1〜qo360),每个值都为0或1。df1是动态的,因此列的顺序可以更改。 df2包含每个qo_id的得分。实际输出实际上是一个或多个特定“ qo_id”的总和
df1格式
user_id age gender qo354 qo355 qo356 qo19 qo65 qo98
abc 34 f 1 0 0 0 1 1
def 40 m 0 1 0 0 0 1
ghi 28 f 0 0 1 1 1 0
df2格式
qo_id scoring outcome
qo354 -1 out4
qo355 0 out4
qo356 1 out4
qo19 1 out15
qo65 2 out21
qo98 1 out15
步骤1 问题:我想将每个qo_id(其中qo_id = 1)乘以各自的得分。
user_id age gender qo354 qo355 qo356 qo19 qo65 qo98
abc 34 f -1 0 0 0 2 1
def 40 m 0 0 0 0 0 1
ghi 28 f 0 0 1 1 2 0
对于步骤1,我能想到的最好的方法如下。但是,这会将人口统计信息转换为NA,实际上有一些qo_id没有任何计分,这些qo_id也变为NA。
df <- df1*df2$scoring[match(names(df1), df2$qo_id)][col(df1)]
第2步问题:我想将结果添加到df1,所以看起来像这样。
user_id age gender qo354 qo355 qo356 qo19 qo65 qo98 out4 out15 out21
abc 34 f -1 0 0 0 2 1 -1 1 2
def 40 m 0 0 0 0 0 1 0 1 0
ghi 28 f 0 0 1 1 2 0 1 1 2
对于第二部分,我有一个原始的rowSums解决方案,请参见下文,但是自动化的东西会很棒。
df1$out4<- rowSums(df1[, c("qo354", "qo355", "qo356")])
df1$out15<- rowSums(df1[, c("qo19", "qo98")])
df1$out21<- rowSums(df1[, c("qo21")])
对此我非常菜鸟,非常感谢您的帮助。谢谢!
答案 0 :(得分:1)
解决第一个问题的一种可能性:
<div class="form-container">
<form action="" id="delete_reply">
<input class="btn btn-link" value="reply">
<input type="submit" class="btn btn-link" value="delete">
</form>
</div>