楼主: 熊小贤
1150 3

[问答] 求助一个简单的数据框操作问题 [推广有奖]

  • 2关注
  • 0粉丝

等待验证会员

已卖:66份资源

本科生

75%

还不是VIP/贵宾

-

威望
0
论坛币
1102 个
通用积分
0.0600
学术水平
4 点
热心指数
6 点
信用等级
1 点
经验
461 点
帖子
36
精华
0
在线时间
169 小时
注册时间
2013-3-25
最后登录
2021-6-7

楼主
熊小贤 发表于 2013-5-28 11:22:29 |AI写论文
30论坛币
求助各位大神:假设有这样的一个数据框
      a   b  c    d    e
1    1   2  3    4   5
2    1   2  3    4
3    1   2  3
用R如何将每一行的最后一个值提取出来并生成一个新的数据框包含这些值
比如
     c    d     e
1                5
2         4
3   3
关键词:数据框 最后一个 如何

沙发
zhangyangsmith 发表于 2013-5-28 11:22:30
熊小贤 发表于 2013-5-28 15:36
非常感谢!!不过
diag()生成对角矩阵,若是每行最后一个不在一个对角线上 最后如何确定生成的矩阵呢
比 ...
  1. # CODE YOURSELF!

  2. tmp <- data.frame(a = c(1,1,1), b = c(2,2,2), c = c(3,3,NA), d = c(NA,4,NA), e = c(NA,NA,NA))

  3. mtx <- t(apply(tmp, 1, function(x) {res = rep(NA, times = length(x)); res[sum(!is.na(x))] <- tail(x[!is.na(x)], 1); return(res)}))

  4. > mtx
  5. [,1] [,2] [,3] [,4] [,5]
  6. [1,] NA NA 3 NA NA
  7. [2,] NA NA NA 4 NA
  8. [3,] NA 2 NA NA NA
复制代码

藤椅
zhangyangsmith 发表于 2013-5-28 15:05:30
  1. # Assuming the blanks are NAs
  2. tmp <- data.frame(a = c(1,1,1), b = c(2,2,2), c = c(3,3,3), d = c(4,4, NA), e = c(5,NA,NA))

  3. # set up the matrix to the desired dimension
  4. mtx <- matrix(ncol = nrow(tmp), nrow = nrow(tmp))

  5. # Assign values
  6. diag(mtx[, ncol(mtx):1]) <- apply(tmp, 1, function(x) return(tail(x[!is.na(x)], n=1)))

  7. # Is this what you want?

  8. > mtx
  9. [,1] [,2] [,3]
  10. [1,] NA NA 5
  11. [2,] NA 4 NA
  12. [3,] 3 NA NA
复制代码

板凳
熊小贤 发表于 2013-5-28 15:36:29
zhangyangsmith 发表于 2013-5-28 15:05
非常感谢!!不过
diag()生成对角矩阵,若是每行最后一个不在一个对角线上 最后如何确定生成的矩阵呢
比方说
      a   b  c    d    e
1    1   2  3
2    1   2  3    4
3    1   2  
生成
     a   b  c   d   e
1           3
2                4
3        2
这样

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-19 08:04