我有一个来自调查的数据集,由于必须设置调查的方式,它有几个相似的变量。例如,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函数的一个问题(我使用了错误的函数),但似乎无法弄清楚要使用的代码。我希望将所有这些结合起来,这样我就有一列中等苏打数据和本专栏中每个设施的价格。任何帮助将不胜感激。
答案 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)