Menu
Coddy logo textTech

データフレームの作成

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   rome

nrow() と 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
challenge icon

チャレンジ

簡単

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")
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Rオンラインコンパイラ