Проверьте, является ли конкретное имя столбца / строки значением в r - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь проверить, называется ли столбец чем-то конкретным (а затем я хотел бы сделать то же самое с именем строки). Следовательно, возможно ли пройтись по каждому имени столбца, чтобы увидеть, равно ли оно чему-либо?

Пример:

dataframe:
      Jan     Feb     Mar
Jan    0       0       0
Feb    0       0       0
Mar    0       0       0

Логика: цикл по каждому столбцу, чтобы найти, называется ли он "Ян", и цикл по каждой строке, чтобы увидеть, называется ли он "Фев". Если логика соблюдается, тогда поставьте 1 в эквивалентном столбце / строке. Э.Г.

Final dataframe:
       Jan     Feb     Mar
Jan    0       0       0
Feb    1       0       0
Mar    0       0       0

Спасибо!

1 Ответ

0 голосов
/ 05 июля 2018

Я сгенерировал ваши данные следующим образом:

df<-data.frame("Jan" = rep(x = 0,times = 3),"Feb" = rep(x = 0,times = 3),"Mar" = rep(x = 0,times = 3))
rownames(df)<-c("Jan","Feb","Mar")

Это дает следующий фрейм данных:

    Jan Feb Mar
Jan   0   0   0
Feb   0   0   0
Mar   0   0   0

Следующая явная функция должна вам помочь:

set_func<-function(dt,col,row){
  nm_col<-colnames(dt)
  nm_row<-rownames(dt)
  if(col %in% nm_col){
    col_id<-which(nm_col == col)
  }
  else {
    cat(col,"is not present as a column name in the input data\n")
  }
  if(row %in% nm_row){
    row_id<-which(nm_row == row)
  }
  else {
    cat(row,"is not present as a row name in the input data\n")
  }
  if(exists("col_id") == T & exists("row_id") == T){
    dt[row_id,col_id]<-1
  }
  return(dt)
}

Аргументы функции:

dt - Ваш фрейм входных данных
col - значение, которое вы проверяете среди имен столбцов
row - значение, которое вы проверяете среди имен строк

Использование этой функции для вашего примера дает следующий результат:

> set_func(dt = df,col = "Jan",row = "Feb")
    Jan Feb Mar
Jan   0   0   0
Feb   1   0   0
Mar   0   0   0

Однако, если вы проверите значение, которое не существует в качестве имени столбца или строки, будет напечатано сообщение, информирующее вас о том, что значение не существует.

> set_func(dt = df,col = "Apr",row = "Mar")
Apr is not present as a column in the input data
    Jan Feb Mar
Jan   0   0   0
Feb   0   0   0
Mar   0   0   0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...