Как перебрать имена столбцов и обновить фрейм данных с заданным значением в конкретном столбце - PullRequest
0 голосов
/ 14 января 2019

Указана роль работника и дата начала этой роли. Фрейм данных с именем «роли» содержит обозначение. Дата начала должна быть заполнена значением, указанным пользователем для этого конкретного обозначения, а оставшиеся столбцы должны быть заполнены "-"

roles <- data.frame(character(),character(),character(),character(), 
                      stringsAsFactors = FALSE)

roles[1, ] <- ifelse(names(roles) == a,sd, "-")
roles
newrow =  data.table(`Manager_start` = roles[1,4],
                     `VP_start` = roles[1,3],
                     `AP_start` = roles[1,2],
                     `P_start` = roles[1,1])
          dbWriteTable(conn = con,"table_name",newrow,append=TRUE,row.names=FALSE)

Ожидаемый результат - столбец Manager должен иметь значение «12/12/12», а остальные столбцы должны иметь «-». Но случайные значения хранятся в базе данных, скажем "17914"

1 Ответ

0 голосов
/ 14 января 2019

Продолжая вашу попытку, мы можем сделать

roles <- data.frame(character(),character(),character(),character(), 
                          stringsAsFactors = FALSE)

roles[1, ] <- ifelse(names(roles) == a,sd, "-")
roles

#  VP Principal AP  Manager
#1  -         -  - 12/12/12

Или другой вариант

vec <- c("VP","Principal","AP","Manager")
setNames(data.frame(t(ifelse(vec == a, sd, "-"))), vec)

EDIT

Для обновленного примера это работает

a <- "Manager"
sd <- "12/12/12"
roles <- data.frame(character(),character(),character(),character(), 
                      stringsAsFactors = FALSE)
names(roles) <- c("VP","Principal","AP","Manager")

roles[1, ] <- ifelse(names(roles) == a,sd, "-")
newrow =  data.table(`Manager_start` = roles[1,4],
                     `VP_start` = roles[1,3],
                     `AP_start` = roles[1,2],
                     `P_start` = roles[1,1])

newrow
#   Manager_start VP_start AP_start P_start
#1:      12/12/12        -        -       -
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...