Установка ширины столбца в наборе данных - PullRequest
0 голосов
/ 21 октября 2011

Я хотел бы установить ширину столбцов (для всех 3 столбцов) в этом наборе данных, как: anim = 1-10; sireid = 11-20; damid = 21-30. В некоторых столбцах отсутствуют значения.

anim=c("1A038","1C467","2F179","38138","030081")
sireid=c("NA","NA","1W960","1W960","64404")
damid=c("NA","NA","1P119","1P119","63666")

mydf=data.frame(anim,sireid,damid)

Ответы [ 3 ]

3 голосов
/ 31 октября 2011

После прочтения вашего вопроса, а также ваших комментариев к предыдущим ответам мне кажется, что вы пытаетесь создать файл фиксированной ширины с вашими данными.В этом случае вы можете использовать функцию write.fwf в пакете gdata:

Загрузить пакет и создать временный выходной файл:

library(gdata)
ff <- tempfile()

Записать ваши данные в фиксированном видеФормат ширины во временный файл:

write.fwf(mydf, file=ff, width=c(10,10,10), colnames=FALSE)

Считайте файл с помощью scan и распечатайте результаты (для демонстрации вывода с фиксированной шириной):

zz <- scan(ff, what="character", sep="\n")
cat(zz, sep="\n")

1A038      NA         NA        
1C467      NA         NA        
2F179      1W960      1P119     
38138      1W960      1P119     
030081     64404      63666    

Удалите временный файл:

unlink(ff)
2 голосов
/ 31 октября 2011

Вы также можете записать вывод фиксированной ширины для чисел и строк, используя функцию sprintf(), которая является производной от аналога C.

Например, для заполнения целых чисел 0:

sprintf("%012d",99)

Для заполнения пробелами: Sprintf ( "% 12d", 123)

И для дополнения строк:

sprintf("%20s","hello world")

Параметры форматирования можно найти в ?sprintf, и есть много руководств по форматированию вывода C для фиксированной ширины.

0 голосов
/ 21 октября 2011

Похоже, вы пришли из фона SAS, где символьные переменные должны иметь явную длину, указанную во избежание неожиданных усечений. В R вам не нужно беспокоиться об этом. Строка символов содержит ровно столько символов, сколько ей необходимо, и автоматически расширяется и сжимается при изменении содержимого.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...