Мои данные выглядит следующим образом: https://gist.github.com/anonymous/dea36ef7b86f71120d50манипулировать столбец на основе другого столбца
Сначала я загрузить данные, как показано ниже
df <- read.delim(".../sample.txt", header=TRUE, sep="\t", fill=TRUE, row.names=1)
тогда я буду только держать столбцы, которые я хочу, как показано ниже
dfm<- df[,c(match(c('m'), colnames(df)),
unlist(lapply(c("mm"),
function(x) grep(x, colnames(df)))))]
в качестве примера первые два столбца DFM выглядит так
row.names
CON__A2A4G1 0.880950
CON__A2A5Y0 0.034051
CON__A2AB72 0.079625
CON__ENSEMBL NaN
CON__ENSEMBL:ENSBTAP00000024146 0.133800
CON__ENSEMBL:ENSBTAP00000024466;CON__ENSEMBL:ENSBTAP00000024462 0.288080
CON__ENSEMBL:ENSBTAP00000025008 NaN
CON__ENSEMBL:ENSBTAP00000038253 0.101990
sp|O43790|KRT86_HUMAN;CON__O43790 0.970460
sp|O76009|KT33A_HUMAN;CON__O76009;CON__Q6NTB9 0.521410
Я хочу, чтобы создать другой фрейм данных или матрицу или ... что имена столбцов совпадают с ФР. , тогда проверьте второй столбец, если он имеет значение, затем вставьте имя первого столбца там, если оно NA или пустое, напишите NA или ничего то же самое для третьего столбца и четвертого ... до конца
Пример вывода (только для второго столбца) выглядит следующим образом.
CON__A2A4G1
CON__A2A5Y0
CON__A2AB72
**Nothing**
CON__ENSEMBL:ENSBTAP00000024146
CON__ENSEMBL:ENSBTAP00000024466;CON__ENSEMBL:ENSBTAP00000024462
**Nothing**
CON__ENSEMBL:ENSBTAP00000038253
Подсказка: 'ifelse (is.na (dat $ columnIwanttocheck)," ", rownames (dat))' – Heroka
@Heroka спасибо, я попытался использовать это, но я не мог использовать его, чтобы применить его для всех данных , – nik
И вы действительно хотите сохранить строки с отсутствующими значениями? Если нет, вы можете использовать что-то вроде 'complete.cases'. В противном случае, если решение Heroka не работает, попробуйте использовать 'apply (your_data, 1, function (x) any (is.na (x))', чтобы получить индекс строк, которые вы хотите заполнить '** Nothing * * '. – coffeinjunky