二元运算符的非数字参数:在R中将数字变量加在一起

时间:2017-08-23 20:06:31

标签: r

我有一个来自调查的数据集,由于必须设置调查的方式,它有几个相似的变量。例如,2016年中型苏打水的价格有20个不同的变量。一个设施只对一个中型苏打水问题有一个回应(它取决于它们的设施类型)。我想在R中一起添加这些以获得所有设施的一个中型苏打水变量。下面是数据的示例。

class MyNotesController:
    def __init__(self, dev_token, noteStore):
        self.dev_token = dev_token
        self.noteStore = noteStore

    def get_all_notes(self):
        # Use self.dev_token and self.noteStore


    def find_notes(self, notebook):
        # Use self.dev_token and self.noteStore

def main():
    dev_token = ...
    noteStote = ...
    my_ctrl = MyNotesController(dev_token, noteStote)
    notes = my_ctrl.get_all_notes()
    notes_from_notebook1 = my_ctrl.find_notes(notebooks[0])

我尝试将所有这些变量合并为一个变量:

Q5a_MediumSoda_Coffee: 2.25, 3.35, NA, NA, NA, NA, NA...
Q6a_Mediumsoda_Burgers:NA,NA, 2.50, NA, NA, NA, NA...
Q7a_MediumSoda_Thai:NA,NA,NA,NA,2.30, 1.50, 2.75..

但是,我收到以下错误:

MediumSoda2016<-sum(Q5a_16_MedS_FSCoff+Q7a_16_MedS_FSAsian+Q9a_16_MedS_FSAmer+Q11a_16_MedS_FSDeli+Q13a_16_MedS_FSMex+Q15a_16_MedS_FSPizza+Q17a_16_MedS_FSPub+Q19a_16_MedS_FSBurgers+Q21a_16_MedS_FSItalian+Q23a_16_MedS_FSBBQRibs+Q25a_16_MedS_FSSeafood+Q27a_16_MedS_FSMed_Greek+Q29a_16_MedS_FSIndian+Q31a_16_MedS_FSOther, na.rm=TRUE)*

我检查了所有变量都是数字的,所以我认为它是sum函数的一个问题(我使用了错误的函数),但似乎无法弄清楚要使用的代码。我希望将所有这些结合起来,这样我就有一列中等苏打数据和本专栏中每个设施的价格。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

采用MrFlick的建议,首先将您的数据合并到数据框中。然后,使用ifelse函数创建一个新变量,具体取决于是否有任何其他变量NA

# assuming the three "variables" are vectors
df <- data.frame(Q5a_MediumSoda_Coffee, Q6a_Mediumsoda_Burgers, Q7a_MediumSoda_Thai)

# use vectorized operation as well as ifelse to create new variable
df$median <- ifelse(is.na(df$Q5a_MediumSoda_Coffee), df$Q6a_Mediumsoda_Burgers, df$Q5a_MediumSoda_Coffee)
df$median <- ifelse(is.na(df$median), df$Q7a_MediumSoda_Thai, df$median)