我有一个数据集,其中一个变量根据 200 个字母代码code1<-c("AAA","BBB","DDD","EEE","FFF")
、2 个字母代码code2<-c("Yyy","Zzzzz")
和 41 个数字代码进行分类code3<-seq(1970,2011,1)
。
我有一个函数,它根据 , , 的唯一值从数据的每个子集生成一个 8code1
数code2
向量code3
。所以,我想在这些数据的每个子集上运行几行代码。
完整列表作为数据框导入data
,我目前的工作是从数据框中提取数据的每个子集,对其进行分析,然后保存输出
问题是,根据这种方案循环遍历code1
和的所有值会很麻烦,而且最好也生成一个输出数据帧,将 8 个数字与唯一值一起保存, ,并产生了它们。code2
code3
code1
code2
code3
我确信这可以在不使用 code1-code3 和 的值的循环的情况下完成assign()
,但是作为一个新手,我恐怕不能把它放在一起。
谢谢——E
附加数据:
这就是我正在运行的函数的输出向量的样子,为一个系列手动设置子集:
output1<-fxn(data$input,[which(data$code1=='AAA'&data$code2=='Yyy'&data$code3==1990)])
output2<-fxn2(output1)
str(output2$out[,2]): num [1:8] 0.009 0.648 0.304 0.004 0.445 ...
output2$out[,2]: [1] 0.009 0.648 0.304 0.004 0.445 36.720 0.000 1.103
附加数据:
为了响应请求,这个伪造的输出数据集近似于我正在寻找的内容——文件的每一行都来自函数的一次完整运行fxn2
。前 8 列由函数输出;添加最后 3 列以区分code1
、code2
、的唯一值code3
:
> head(data)
X.x1 x2 x3 x4 x5 x6 x7 x8 code3 code2 code1
1 0.008 0.595 0.185 0.005 0.173 36.744 0 1.102 1970 male BGR
2 0.004 0.242 0.276 0.005 0.348 46.017 0 1.108 1971 male BGR
3 0.002 0.553 0.242 0.005 0.247 35.424 0 1.107 1972 male BGR
4 0.005 0.593 0.270 0.004 0.312 43.701 0 1.105 1973 male BGR
5 0.009 0.660 0.217 0.005 0.266 37.955 0 1.103 1974 male BGR
6 0.006 0.347 0.297 0.005 0.411 50.959 0 1.108 1975 male BGR
> dput(head(data))
structure(list(X.x1 = c(0.008, 0.004, 0.002, 0.005, 0.009, 0.006
), x2 = c(0.595, 0.242, 0.553, 0.593, 0.66, 0.347), x3 = c(0.185,
0.276, 0.242, 0.27, 0.217, 0.297), x4 = c(0.005, 0.005, 0.005,
0.004, 0.005, 0.005), x5 = c(0.173, 0.348, 0.247, 0.312, 0.266,
0.411), x6 = c(36.744, 46.017, 35.424, 43.701, 37.955, 50.959
), x7 = c(0, 0, 0, 0, 0, 0), x8 = c(1.102, 1.108, 1.107, 1.105,
1.103, 1.108), year = 1970:1975, sex = structure(c(1L, 1L, 1L,
1L, 1L, 1L), .Label = "male", class = "factor"), iso3 = structure(c(1L,
1L, 1L, 1L, 1L, 1L), .Label = "BGR", class = "factor")), .Names = c("X.x1",
"x2", "x3", "x4", "x5", "x6", "x7", "x8", "year", "sex", "iso3"
), row.names = c(NA, 6L), class = "data.frame")