看帖神器
未名空间
追帖动态
头条新闻
每日新帖
最新热帖
新闻存档
热帖存档
文学城
虎扑论坛
未名空间
北美华人网
北美微论坛
看帖神器
登录
← 下载
《看帖神器》官方
iOS App
,体验轻松追帖。
R语言处理数据的一个问题
查看未名空间今日新帖
最新回复:2021年4月10日 11点9分 PT
共 (4) 楼
返回列表
订阅追帖
只看未读
更多选项
阅读全帖
只看图片
只看视频
查看原帖
w
wx2123
大约 3 年
楼主 (未名空间)
如果我有一个sample dataframe如下
# sample dataframe
g <- c="" 0="" 7="" 7="" 9="" 2="" 4="" 5="" 1="" 6="" 4="">n1 <- c="" 3="" 4="" 1="" 7="" 3="" 2="" 7="" 8="" 4="" 3="">n2 <- c="" 5="" 9="" 6="" 8="" 5="" 6="" 0="" 9="" 5="" 7="">n3 <- c="" 7="" 2="" 1="" 4="" 8="" 0="" 9="" 3="" 8="" 4=""># ......
# ......
n100 <- c="" 8="" 6="" 8="" 2="" 4="" 8="" 7="" 4="" 8="" 6="">p1 <- c="" 2="" 1="" 6="" 8="" 3="" 9="" 1="" 9="" 2="" 1="">p2 <- c="" 1="" 3="" 9="" 9="" 7="" 9="" 7="" 9="" 3="" 7="">
sample <- data.frame="" g="" n1="" n2="" n2="" n100="" p1="" p2="">
现在需要根据p1,p2和n1,n2,…,n100计算一列q。例如,
q列的第1行=n2+n1=5+3=8。因为p1的第1行是2,p2的第1行是1.
q列的第2行=n1+n3=4+2=6。因为p1的第2行是4,p2的第2行是2.
……
以此类推。
请问,这个q列应该怎么算呢?
我用到了melt,但是似乎还没有结束。
library(reshape2)
melt.sample <- melt="" sample="" id="g">
W
Wtao
大约 3 年
2 楼
自定义一个函数,输入是一个长度为102的vector, 即只处理一行。
然后做一个matrix 然后apply一下。
你的问题描述里面好像有错
t
tankerw
大约 3 年
3 楼
不知melt功能。但知道你的核心问题是convert character string into variable
name.
【 在 wx2123 (bill) 的大作中提到: 】
: 如果我有一个sample dataframe如下
: # sample dataframe
: g <- c="" 0="" 7="" 7="" 9="" 2="" 4="" 5="" 1="" 6="" 4="">: n1 <- c="" 3="" 4="" 1="" 7="" 3="" 2="" 7="" 8="" 4="" 3="">: n2 <- c="" 5="" 9="" 6="" 8="" 5="" 6="" 0="" 9="" 5="" 7="">: n3 <- c="" 7="" 2="" 1="" 4="" 8="" 0="" 9="" 3="" 8="" 4="">: # ......
: # ......
: n100 <- c="" 8="" 6="" 8="" 2="" 4="" 8="" 7="" 4="" 8="" 6="">: p1 <- c="" 2="" 1="" 6="" 8="" 3="" 9="" 1="" 9="" 2="" 1="">: ...................
a
affineV
大约 3 年
4 楼
X=cbind(n1,...,n100)
q=c()
for(i in 1:dim(X)[1]) q=c(q,X[i,p1[i]]+X[i,p2[i]])
请输入帖子链接
收藏帖子
如果我有一个sample dataframe如下
# sample dataframe
g <- c="" 0="" 7="" 7="" 9="" 2="" 4="" 5="" 1="" 6="" 4="">n1 <- c="" 3="" 4="" 1="" 7="" 3="" 2="" 7="" 8="" 4="" 3="">n2 <- c="" 5="" 9="" 6="" 8="" 5="" 6="" 0="" 9="" 5="" 7="">n3 <- c="" 7="" 2="" 1="" 4="" 8="" 0="" 9="" 3="" 8="" 4=""># ......
# ......
n100 <- c="" 8="" 6="" 8="" 2="" 4="" 8="" 7="" 4="" 8="" 6="">p1 <- c="" 2="" 1="" 6="" 8="" 3="" 9="" 1="" 9="" 2="" 1="">p2 <- c="" 1="" 3="" 9="" 9="" 7="" 9="" 7="" 9="" 3="" 7="">
sample <- data.frame="" g="" n1="" n2="" n2="" n100="" p1="" p2="">
现在需要根据p1,p2和n1,n2,…,n100计算一列q。例如,
q列的第1行=n2+n1=5+3=8。因为p1的第1行是2,p2的第1行是1.
q列的第2行=n1+n3=4+2=6。因为p1的第2行是4,p2的第2行是2.
……
以此类推。
请问,这个q列应该怎么算呢?
我用到了melt,但是似乎还没有结束。
library(reshape2)
melt.sample <- melt="" sample="" id="g">
自定义一个函数,输入是一个长度为102的vector, 即只处理一行。
然后做一个matrix 然后apply一下。
你的问题描述里面好像有错
不知melt功能。但知道你的核心问题是convert character string into variable
name.
【 在 wx2123 (bill) 的大作中提到: 】
: 如果我有一个sample dataframe如下
: # sample dataframe
: g <- c="" 0="" 7="" 7="" 9="" 2="" 4="" 5="" 1="" 6="" 4="">: n1 <- c="" 3="" 4="" 1="" 7="" 3="" 2="" 7="" 8="" 4="" 3="">: n2 <- c="" 5="" 9="" 6="" 8="" 5="" 6="" 0="" 9="" 5="" 7="">: n3 <- c="" 7="" 2="" 1="" 4="" 8="" 0="" 9="" 3="" 8="" 4="">: # ......
: # ......
: n100 <- c="" 8="" 6="" 8="" 2="" 4="" 8="" 7="" 4="" 8="" 6="">: p1 <- c="" 2="" 1="" 6="" 8="" 3="" 9="" 1="" 9="" 2="" 1="">: ...................
X=cbind(n1,...,n100)
q=c()
for(i in 1:dim(X)[1]) q=c(q,X[i,p1[i]]+X[i,p2[i]])