データフレームの作成
CoddyのRジャーニー「ロジックとフロー」セクションの一部。レッスン 42/64。
データフレームはRのテーブルです。各列はそれぞれ固有の型を持つベクトルであり、すべての列の長さは同じで、各行に1つの値があります。data.frame()は名前付きベクトルからデータフレームを作成します:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people)出力:
name age city
1 ada 36 london
2 bo 22 paris
3 cy 41 romenrow() と ncol() はサイズを返し、names() は列の一覧を表示します。行列とは異なり、列には異なる型を格納できます。ここではテキストと数値を格納しています。
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(nrow(people))
print(ncol(people))
print(names(people))出力:
[1] 3
[1] 3
[1] "name" "age" "city"str() はすべての列の型と最初の値を表示するため、データフレームに何が含まれているかをすばやく確認できます:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
str(people)出力:
'data.frame': 3 obs. of 3 variables:
$ name: chr "ada" "bo" "cy"
$ age : num 36 22 41
$ city: chr "london" "paris" "rome"データは、1 行につき 1 行のテキストとして届くことがよくあります。read.csv(text = lines)は、そのような行をデータフレームに変換します。最初の行を列名として使用し、数値は自動的に変換します。
lines <- c("item,qty", "tea,2", "jam,5")
orders <- read.csv(text = lines)
print(orders)
print(sum(orders$qty))出力:
item qty
1 tea 2
2 jam 5
[1] 7チャレンジ
簡単table_info(names, ages)を完成させてください。2つのベクトルから、列nameとageを持つデータフレームを作成します。3行を返してください。行数を示すRows: 、, で結合した列名を示すColumns: 、そして最大の年齢を持つ行の名前(年齢が同じ場合は最初の行)を示すOldest: です。
提供されたコードは、名前と年齢をカンマ区切りの2行として読み取り、返された各行を出力します。
自分で試してみよう
table_info <- function(names, ages) {
# ここにコードを書いてください
character(0)
}
# 提供された入出力コード:そのままにしておいてください
input <- suppressWarnings(readLines(file("stdin")))
cat(table_info(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Rオンラインコンパイラ