【问题标题】:How to add multiple values to data.frame without loop?如何在没有循环的情况下向 data.frame 添加多个值?
【发布时间】:2017-10-07 15:20:03
【问题描述】:

假设我有一个矩阵 D,它由特定年龄的每年死亡人数组成。

我想用存储在 矢量年龄,但下面的代码给了我错误的答案。不循环怎么写代码?

# Year and age grid for tables
Years=c(2007:2017)
Ages=c(60:70)

#Data.frame of deaths
D=data.frame(matrix(ncol=length(Years),nrow=length(Ages)));  D[is.na(D)]=0 
colnames(D)=Years
rownames(D)=Ages

Age=c(60,61,62,65,65,65,68,69,60)
year=2010

D[as.character(Age),as.character(year)]<-
D[as.character(Age),as.character(year)]+1
D[,'2010'] # 1 1 1 0 0 1 0 0 1 1 0
# Should be  2 1 1 0 0 3 0 0 1 1 0

【问题讨论】:

    标签: r matrix vector subset


    【解决方案1】:

    你需要使用table

    AgeTable = table(Age)
    D[names(AgeTable), as.character(year)] = AgeTable
    D[,'2010']
    [1] 2 1 1 0 0 3 0 0 1 1 0
    

    【讨论】:

    • 该解决方案适用于这个问题。但我需要可以累积以前的表格列的解决方案。
    • @Satel 那么,您如何存储前几年的数据?请提供数据,以便我们对您的实际问题做出回应。
    • 假设我有这样一行代码,而我的数据是。每次通话我都有多次年龄复制。但是代码不会累积它。数据:drive.google.com/open?id=0BxtjNizJ0NDlWmdsb3NRVzhDUm8PY[as.character(died.after.bd$Age),as.character(year)]=(as.numeric(((died.after.bd$Death-died.after.bd$bd ) /365.25))+ PY[as.character(died.after.bd$Age),as.character(year)])
    猜你喜欢
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2013-09-12
    • 2015-03-06
    • 1970-01-01
    相关资源
    最近更新 更多