r - 根据行号将列/行从一个数据帧映射到另一个数据帧
问题描述
我有两个数据框:
df1<-structure(list(Name = c("sub7", "sub7", "sub7", "sub7", "sub7",
"sub7", "sub7", "sub7", "sub7", "sub7"), StimulusName = c("Alpha1",
"Alpha1", "Alpha1", "Alpha1", "Alpha1", "Alpha1", "Alpha1", "Alpha1",
"Alpha1", "Alpha1"), PupilLeft = c(10.046, 10.05, 10.062, 10.072,
10.072, 10.056, 10.056, 10.056, 10.066, 10.066)), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
df2<-structure(list(Name = c("sub7", "sub7"), StimulusName = c("Alpha1",
"Alpha1"), Row_Num = c(1, 3), Label = c("Onset", "Offset")), row.names = c(NA,
-2L), vars = "Name", drop = TRUE, indices = list(0:1), group_sizes = 2L, biggest_group_size = 2L, labels = structure(list(
Name = "Guilty Subject 07"), row.names = c(NA, -1L), class = "data.frame", vars = "Name", drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
我想从列Row_Num
和Label
in 中获取值,df2
并将它们映射到与 indf1
中的数字相对应的行Row_Num
。
我想在不使用循环的情况下实现这一点。也许只是使用这些Row_Num
值作为索引?
此实例中的最终数据框如下所示:
Name StimulusName PupilLeft Row_Num Label
1 sub7 Alpha1 10.0 1 Onset
2 sub7 Alpha1 10.0 NA NA
3 sub7 Alpha1 10.1 3 Offset
4 sub7 Alpha1 10.1 NA NA
5 sub7 Alpha1 10.1 NA NA
6 sub7 Alpha1 10.1 NA NA
7 sub7 Alpha1 10.1 NA NA
8 sub7 Alpha1 10.1 NA NA
9 sub7 Alpha1 10.1 NA NA
10 sub7 Alpha1 10.1 NA NA
解决方案
另一种选择是Row_Num
在df1
合并之前创建。
df_out <- merge(
transform(df1, Row_Num = seq_len(nrow(df1))),
df2,
by = c("Name", "StimulusName", "Row_Num"),
all.x = TRUE)
df_out$Row_Num <- ifelse(df_out$Row_Num %in% df2$Row_Num, df_out$Row_Num, NA)
df_out
# Name StimulusName Row_Num PupilLeft Label
#1 sub7 Alpha1 1 10.046 Onset
#2 sub7 Alpha1 NA 10.050 <NA>
#3 sub7 Alpha1 3 10.062 Offset
#4 sub7 Alpha1 NA 10.072 <NA>
#5 sub7 Alpha1 NA 10.072 <NA>
#6 sub7 Alpha1 NA 10.056 <NA>
#7 sub7 Alpha1 NA 10.056 <NA>
#8 sub7 Alpha1 NA 10.056 <NA>
#9 sub7 Alpha1 NA 10.066 <NA>
#10 sub7 Alpha1 NA 10.066 <NA>
推荐阅读
- android - 找不到 multidex.jar (com.android.support:multidex:1.0.2)
- javascript - 如何通过对heroku做出反应来部署节点js应用程序
- c# - 嵌套 for 循环:给出串联结果
- azure - 资源类 - 并发 - Azure SQL 数据仓库
- ruby-on-rails - 如何使用 rspec 为具有自定义属性的序列化程序编写单元测试
- macros - 宏块意外返回 [do: return value]
- django - 如何在 pre_save Django 中连接模型字段值
- c++ - 3dsmax SDK c++ bonedef.h
- bootstrap-4 - Bootstrap tour popup-modal 不包含任何内容
- android - 找不到 design.jar (com.android.support:design:27.0.0)