У меня есть один кадры данных, как показано ниже, df1
и df2
:Как создать цикл с двумя семенями, если использовать три data.frames в R?
# data
df1 <- read.table(text = "
SNP CHR BP A1 A2 zscore P CEUmaf LOC
rs58043752 1 3344877 A G 0.289 0.7726 . 1:3344877
rs2483242 1 3345145 A T 0.393 0.6946 . 1:3345145
rs1572039 1 3345216 T C 0.443 0.658 . 1:3345216
rs1537407 1 3345705 T C -0.289 0.7726 . 1:3345705
rs2493277 1 3346348 C G -1.552 0.1207 0.09167 1:3346348
rs11583353 1 3346403 C T -0.414 0.6786 0.875 1:3346403",
header = TRUE, stringsAsFactors = FALSE)
df2 <- read.table(text = "
CHR POS ID AA DA DAF SDS LOC
1 3344877 rs58043752 G A 0.1095 0.80517243505521 1:3344877
1 3345145 rs2483242 T A 0.5746 0.741513997303754 1:3345145
1 3345216 rs1572039 T C 0.0784 0.130228249846394 1:3345216
1 3345705 rs1537407 C T 0.798 0.275710355505832 1:3345705
1 3346348 rs2493277 G C 0.5737 0.283452115383779 1:3346348
1 3346403 rs11583353 C T 0.2238 -0.0246952604330743 1:3346403",
header = TRUE, stringsAsFactors = FALSE)
у меня есть третий dataframe (DF3), как:
Input_SNP SDS
1:3344877 NA
1:3345145 NA
1:3345216 NA
1:3345705 NA
1:3346348 NA
1:3346403 NA
Я хочу сравнить А1 и А2 df1 АА и DA df2, а затем выводят на третий df3. Моя логика такова:
- Если
df1$zscore
вdf1
положителен: Я хочу увидеть, еслиdf1$A1 == df2$DA
, если да, то я хочу, чтобы положитьdf2$SDS
вdf3$SDS
. Еслиdf1$A1 == df2$AA
, то я хочу поставить НЕГАТИВНОdf2$SDS
вdf3$SDS
. - Если
df1$zscore
вdf1
отрицателен: Я хочу увидеть, еслиdf1$A2 == df2$DA
, если да, то я хочу, чтобы поставитьdf2$SDS
вdf3$SDS
Еслиdf1$A2 == df2$AA
, то я хочу, чтобы поставить негативdf2$SDS
вdf3$SDS
Конечный результат будет таким образом выглядеть следующим образом:
Input_SNP SDS
1:3344877 0.805
1:3345145 0.742
1:3345216 -0.130
1:3345705 -0.276
1:3346348 -0.283
1:3346403 -0.025
Не могли бы вы опубликовать выборку данных с 'dput()'? Почему бы вам не написать цикл для сравнения df1 и df2 с вашими условиями? Я что-то упускаю? – nevrome
Используйте слияние на столбцах «SNP CHR BP», затем используйте свою логику для фильтрации. – zx8754
Возможный дубликат [Как подключить (объединить) кадры данных (внутренний, внешний, левый, правый)?] (Http://stackoverflow.com/questions/1299871)? – zx8754