【发布时间】:2017-12-01 10:23:29
【问题描述】:
我有一个如下的data.frame:
Lot Wafer Voltage Slope Voltage_irradiated Slope_irradiated m_dist_lot
1 8 810 356.119 6.08423 356.427 6.13945 NA
2 8 818 355.249 6.01046 354.124 6.20855 NA
3 9 917 346.921 6.21474 346.847 6.33904 NA
4 (...)
120 9 914 353.335 6.15060 352.540 6.19277 NA
121 7 721 358.647 6.10592 357.797 6.17244 NA
122 (...)
我的目标很简单,但也有点困难。绝对可以通过以下几种方式解决它: 我想根据一个因素对每一行应用一个函数“func”,例如因素“很多”。这是通过
m_dist_lot<- by(data.frame, data.frame$Lot,func)
这确实有效,但结果是一个列表:
data.frame$Lot: 7
354 355 363 367 378 419 426 427 428 431 460 477 836
3.5231249 9.4229589 1.4996504 7.2984485 7.6883170 1.2354754 1.8547674 3.1129814 4.4303001 1.9634573 3.7281868 3.6182559 6.4718306
data.frame$Lot: 8
1 2 11 15 17 18 19 20 21 22 24 25
2.1415352 4.6459868 1.3485551 38.8218984 3.9988686 2.2473563 6.7186047 2.6433790 0.5869746 0.5832567 4.5321623 1.8567318
第一行似乎是从中获取数据的初始 data.frame 的行。第二行是计算值。 我现在的问题是:如何根据正确的行将这些值正确存储到原始 data.frame 中?
例如在数据框的某个计算/行的情况下:
m_dist_lot<- by(data.frame, data.frame$Lot,func)
data.frame 中第二行的结果
data.frame$Lot: 8
2
4.6459868
我想根据正确的行“2”将值4.6459868存储在data.frame$m_dist_lot中:
Lot Wafer Voltage Slope Voltage_irradiated Slope_irradiated m_dist_lot
1 8 810 356.119 6.08423 356.427 6.13945 NA
2 8 818 355.249 6.01046 354.124 6.20855 4.6459868
3 9 917 346.921 6.21474 346.847 6.33904 NA
4 (...)
120 9 914 353.335 6.15060 352.540 6.19277 NA
121 7 721 358.647 6.10592 357.797 6.17244 NA
122 (...)
但我不知道怎么做。实际上,我最好的尝试是使用“unlist”。
un<- unlist(m_dist_lot) 结果
un[1]
6.354
3.523125
un[2]
6.355
9.422959
un[3]
(..)
但我仍然不知道如何“分离”“factor.row”和“calculated”值的信息,以便将信息正确存储在数据框中。
至少在使用un<- unlist(m_dist_lot, use.names = FALSE) 时,这些因素不存在:
un[1]
3.523125
un[2]
9.422959
un[3]
1.49965
(..)
但现在我缺乏如何将这些值正确分配到 data.frame 中的信息。
使用un<- do.call(rbind, lapply(m_dist_lot, data.frame, stringsAsFactors=FALSE)) 会导致
(...)
7.922 0.94130936
7.976 4.89560441
8.1 2.14153516
8.2 4.64598677
8.11 1.34855514
(...)
这里我仍然缺少计算值的正确分配 data.frame。 我确信必须有一个可行的方法。你知道什么好方法吗?
【问题讨论】:
标签: r